回溯算法
为有牺牲多壮志
这个作者很懒,什么都没留下…
展开
-
LeetCode回溯专题-N皇后问题I&II
51. N 皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。方法还是比较明确的,官方题解有位运算方法,这个可以简化,但是我觉得用hashset就可以了。首先逐行处理,每行中找一个位置填入皇后,每个位置都要考虑是否会和其他皇后冲突,每个皇后的势力范围包括所在行、列、斜行,.原创 2022-01-10 18:15:27 · 215 阅读 · 0 评论 -
LeetCode回溯专题-37. 解数独
37. 解数独编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.'表示。方法一:暴力搜索,三个used数组储存每行每列每个九宫格的数字使用状态,然后再根据used数组来回溯class Solution { public void solveSudoku(...原创 2022-01-09 21:42:58 · 252 阅读 · 0 评论 -
LeetCode回溯专题-46全排列
46. 全排列给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。public class Solution { public List<List<Integer>> permute(int[] nums) { int len = nums.length; // 使用一个动态数组保存所有可能的全排列 List<List<Integer>> res ...原创 2021-12-11 12:55:27 · 66 阅读 · 0 评论 -
LeetCode 回溯专题-字符串
22. 括号生成原创 2022-01-04 22:39:19 · 275 阅读 · 0 评论 -
LeetCode 回溯专题-洪泛
79. 单词搜索给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。...原创 2021-12-31 23:14:51 · 246 阅读 · 0 评论 -
LeetCode 216组合总数III
216. 组合总和 III找出所有相加之和为n 的k个数的组合。组合中只允许含有 1 -9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。正常回溯算法,爆搜就是简单无脑!注意这题的限制,既有总和又有数字要求,不能重复能算要求吗?我DFS带个start,就能确保不重复啦!class Solution { public List<List<Integer>> combinationSum3(int ...原创 2021-12-21 16:36:59 · 187 阅读 · 0 评论 -
LeetCode 78子集&90子集II(回溯+剪枝)
给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。因为互不相同,只需要简单回溯即可,确保不会有重复数字,每次往下遍历一层,start++即可,写代码的时候犯了些铸币错误,所以加了stdout,不过没什么影响就没删了class Solution { public List<List<Integer>> subsets(int[] nums) { ...原创 2021-12-17 22:02:30 · 116 阅读 · 0 评论 -
LeetCode40. 组合总和 II(回溯+剪枝)
给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。对比39题,唯一的区别在于解集不能重复,因此对比39题我们要考虑到使用used数组来保证不会产生相同结果(117条消息) LeetCode39.组合总数(回溯与剪枝)_m0_51630248的博客-CSDN博客class Solution { pub...原创 2021-12-17 12:56:22 · 298 阅读 · 0 评论 -
LeetCode39.组合总数(回溯与剪枝)
39. 组合总和给你一个 无重复元素 的整数数组candidates 和一个目标整数target,找出candidates中可以使数字和为目标数target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target 的不同组合数少于 150 个。很经典的回溯算法,直接套模板,但是我做的结果emmmm,很明显...原创 2021-12-17 12:31:02 · 266 阅读 · 0 评论