按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.基于集合的回溯 2.基于位运算的回溯
算法
LeetCode 50 Pow(x, n)
LeetCode 49 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。 示例 1: 示例 2: 示例 3: 输入: strs = [“a”]输出: [[“a”]] 提示: 解题: 把每个单词里面的字母按顺序排列,然后用这个值作为map的键 官方解答: 1.排序 2.计数
LeetCode 48 旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 示例 2: 提示: 解答: 官方解答: 1.使用辅助数组 2.原地旋转 3.用翻转代替旋转
LeetCode 47 全排列 II
LeetCode 46 全排列
LeetCode 45 跳跃游戏 II
给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 返回到达 nums[n – 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n – 1]。 示例 1: 示例 2: 提示: 解题: 官方解答: 1.反向查找出发位置 2.正向查找可到达的最大值
LeetCode 44 通配符匹配
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 两个字符串完全匹配才算匹配成功。 说明: 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 解答: 官方解答: 1.动态规划 2.贪心算法
LeetCode 43 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 示例 2: 提示: 解题: 按照竖式乘法分开来计算后加起来 官方解答: 1.做加法 2.做乘法
LeetCode 42 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1: 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 提示: 解题 选出中间两个最大的,然后求出中间的容量,然后再看两边的 官方解答 1.动态规划 2.单调栈 3.双指针