回溯剪枝/排列组合
文章平均质量分 75
回溯剪枝/排列组合
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
-
leetcode **52. N皇后 II(待研究)(2020.10.17)
【题目】**52. N皇后 IIn 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q.."]]原创 2020-10-17 09:24:33 · 424 阅读 · 0 评论 -
leetcode *18. 四数之和(2020.10.5)
【题目】*18. 四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2,原创 2020-10-05 11:30:32 · 173 阅读 · 0 评论 -
leetcode *剑指 Offer 38. 字符串的排列
【题目】*剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8【解题思路1】回溯+Set*47. 全排列 II理论上和这题是差不多的,但是两个List处理String没搞出来,发现了更巧妙的办法,就是通过swap字符和Set去重来得到不重复的原创 2020-09-24 18:30:21 · 168 阅读 · 0 评论 -
leetcode *剑指 Offer 34. 二叉树中和为某一值的路径 & *113. 路径总和 II(2020.9.26)(回溯)
【题目】*剑指 Offer 34. 二叉树中和为某一值的路径 & *113. 路径总和 II112. 路径总和437. 路径总和 III输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13原创 2020-09-22 23:22:07 · 162 阅读 · 0 评论 -
leetcode *78. 子集(2020.9.20)
【题目】*78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]【解题思路1】之前的排列组合题,输出的情况都是长度相同但顺序不同的结果,这题是要把各种长度的都要囊括进去class Solution { public List<Lis原创 2020-09-22 16:48:46 · 135 阅读 · 0 评论 -
leetcode *47. 全排列 II(2020.9.18)
【题目】*47. 全排列 II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]【解题思路1】回溯剪枝保证在填第 index 个数的时候重复数字只会被填入一次即可本题选择对原数组排序,保证相同的数字都相邻,然后每次填入的数一定是这个数所在重复数集合中**「从左往右第一个未被填过的数字」**代码中!used[i - 1] 写成 used[i - 1] 也可以通过,但 !used[i - 1] 剪原创 2020-09-22 15:59:49 · 185 阅读 · 0 评论 -
leetcode **37. 解数独(位运算待研究)(2020.9.15)
【题目】**37. 解数独编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。【解题思路1】递归回溯class Solution { p原创 2020-09-15 11:12:51 · 197 阅读 · 0 评论 -
leetcode *剑指 Offer 12. 矩阵中的路径 & *79. 单词搜索(2020.9.13)
【题目】*剑指 Offer 12. 矩阵中的路径 & *79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word原创 2020-09-13 11:23:18 · 182 阅读 · 0 评论 -
leetcode *216. 组合总和 III(2020.9.11)
【题目】*216. 组合总和 III找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]【解题思路1】回溯剪枝class Solution { public List<List<原创 2020-09-11 09:43:26 · 892 阅读 · 0 评论 -
leetcode *面试题 08.11. 硬币(2020.4.23)
【题目】*面试题 08.11. 硬币(待研究)*322. 零钱兑换*面试题 08.11. 硬币硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2: 输入: n = 10 ...原创 2020-04-23 15:12:42 · 297 阅读 · 0 评论 -
leetcode *322. 零钱兑换(动态规划,待研究)(2020.3.8)
【题目】322. 零钱兑换括号生成问题组合总和给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2]...原创 2020-04-06 16:40:23 · 260 阅读 · 0 评论 -
leetcode 401. 二进制手表
【题目】401. 二进制手表22. 括号生成95. 不同的二叉搜索树 II46. 全排列二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1...原创 2020-04-10 17:20:31 · 264 阅读 · 0 评论 -
leetcode *95. 不同的二叉搜索树 II(待研究)(2020.7.21)
【题目】95. 不同的二叉搜索树 II给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 ...原创 2020-04-09 15:29:01 · 192 阅读 · 0 评论 -
leetcode *22. 括号生成(2020.4.9)
【题目】22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]【解题思路1】DFSDFS步骤:当前左右括号都有大于 ...原创 2020-04-09 14:57:12 · 208 阅读 · 0 评论 -
leetcode 653. 两数之和 IV - 输入 BST
【题目】653. 两数之和 IV - 输入 BST给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 ...原创 2020-04-23 15:33:09 · 291 阅读 · 0 评论 -
leetcode 167. 两数之和 II - 输入有序数组(2020.7.20)
【题目】给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], ...原创 2020-03-26 22:35:38 · 217 阅读 · 0 评论 -
leetcode *16. 最接近的三数之和(2020.6.24)
【题目】16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <=原创 2020-06-24 14:53:50 · 250 阅读 · 0 评论 -
leetcode *15. 三数之和(2020.6.12)
【题目】*15. 三数之和两数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]【解题思路1】排序+双指针class Solution { public sta原创 2020-06-12 11:52:32 · 148 阅读 · 0 评论 -
leetcode *40. 组合总和 II(2020.9.10)
【题目】*40. 组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7], [1, 2, 5], [2, 6], [1, 1,原创 2020-09-10 11:24:10 · 153 阅读 · 0 评论 -
leetcode *39. 组合总和(2020.9.9)
【题目】*39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:candidates = [2,3原创 2020-09-09 10:34:11 · 165 阅读 · 0 评论 -
leetcode *77. 组合(2020.9.8)
【题目】*77. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]【解题思路1】全排列 - 回溯问题变成从n-1里选k个 的组合,加上从n-1里选k-1的组合考虑剪枝,如果 n = 7, k = 4,从 5 开始搜索就已经没有意义了,这是因为:即使把 5 选上,后面的数只有 6 和 7,一共就 3 个候原创 2020-09-08 12:34:20 · 203 阅读 · 0 评论 -
leetcode 剑指 Offer 17. 打印从1到最大的n位数(大数全排列)
【题目】示例 1:示例 2:示例 3:【解题思路1】【解题思路2】原创 2020-06-13 10:25:48 · 290 阅读 · 0 评论 -
leetcode *46. 全排列(回溯经典例题详解)(2020.4.25)
【题目】46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]【解题思路1】回溯算法几个类似的题几个类似的题2class Solution { public List<List&l...原创 2020-04-09 16:39:08 · 207 阅读 · 0 评论 -
leetcode *60. 第k个排列(2020.9.5)
【题目】*60. 第k个排列*46. 全排列*60. 第k个排列给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: "213"示例 2:输入: n = 4,原创 2020-09-05 10:48:23 · 160 阅读 · 0 评论 -
leetcode **51. N 皇后(待研究)(2020.9.3)
【题目】**51. N 皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q..原创 2020-09-03 08:10:45 · 163 阅读 · 0 评论 -
leetcode *491. 递增子序列(2020.8.25)
【题目】*491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。【解题思路1】递归class Solu原创 2020-08-25 09:56:59 · 157 阅读 · 0 评论 -
leetcode *17. 电话号码的字母组合(2020.8.26)
【题目】*17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。【解题思路1】递归 回溯class Solution { public List<String&原创 2020-08-26 09:52:33 · 227 阅读 · 0 评论