
leetcode刷题/回溯算法
文章平均质量分 56
公仔面i
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode刷题/回溯 51. N 皇后
51. N 皇后题意:n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解原创 2021-08-16 15:27:35 · 141 阅读 · 0 评论 -
leetcode刷题/回溯 526. 优美的排列
526. 优美的排列题意:假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列示例1:输入: 2输出: 2解释: 第 1 个优美的排列是 [1, 2]: 第 1 个位置(i=1)上的数字是1,1能被 i(原创 2021-08-16 09:20:07 · 237 阅读 · 0 评论 -
leetcode刷题/回溯算法 47. 全排列 II
47. 全排列 II题意给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]解题思路:排列 + 去重问答如何去重?分两步走,详细见下文.递归返回条件如果路径长度等于数原创 2021-08-15 14:36:05 · 219 阅读 · 0 评论 -
leetcode刷题/回溯算法 46. 全排列
46. 全排列题意:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]解题思路在递归回溯每一个数的基础上加上一个标记数组来判断是否该数已经被添加.原创 2021-08-15 14:35:23 · 266 阅读 · 0 评论 -
leetcode刷题/回溯算法 90. 子集 II
90. 子集 II题意给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]解题思路:子集 + 不重复问答子集相当于寻找数的每一个节点,递归一次就把路径加入结果一次不重复原创 2021-08-15 14:34:44 · 203 阅读 · 0 评论 -
leetcode刷题/回溯算法 78. 子集
78. 子集题意:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]解题思路:组合都是用路径,寻找符合的路径然后添加到结果.子集是寻找节点,等于寻找所有符合条件的节点.问答原创 2021-08-15 14:33:57 · 128 阅读 · 0 评论 -
leetcode刷题/回溯算法 40. 组合总和 II
40. 组合总和 II题意:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,原创 2021-08-15 14:32:59 · 152 阅读 · 0 评论 -
leetcode刷题/回溯 39. 组合总和
39. 组合总和题意:给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例 1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例 2:原创 2021-08-10 10:04:55 · 211 阅读 · 0 评论 -
leetcode刷题/回溯 17. 电话号码的字母组合
17. 电话号码的字母组合题意:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]解题思路:回溯原创 2021-08-09 23:36:21 · 129 阅读 · 0 评论 -
leetcode刷题/回溯 216. 组合总和 III
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]]解题思路这道题就是典型的回溯算法,确定条件然后直接套模板即可问答需要遍历多原创 2021-08-09 20:18:00 · 167 阅读 · 0 评论