回溯算法
回溯算法
从零开始的数据猿
这个作者很懒,什么都没留下…
展开
-
LeetCode 52. N皇后 II
题目n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。解题思路与N皇后思路一样,删一点代码即可代码class Solution { public Set<Integer> col,pie,na; public int res; int n; boolean[][] board; public int totalNQueens(int原创 2021-06-11 07:59:53 · 173 阅读 · 2 评论 -
LeetCode 51. N 皇后
题目n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q…","…Q",“Q…”,"…Q."],["…Q.",“Q…”,"…Q",".Q…"]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:输入:n = 1输出:[[“原创 2021-06-10 09:35:24 · 94 阅读 · 0 评论 -
LeetCode 437. 路径总和 III
题目给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / \ 5 -3 / \ \ 3 2 1原创 2021-06-04 07:12:16 · 262 阅读 · 0 评论 -
LeetCode 113. 路径总和 II
题目给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3:输入:root = [1,2], tar原创 2021-06-04 00:16:47 · 62 阅读 · 0 评论 -
LeetCode 257. 二叉树的所有路径
题目给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解题思路使用回溯算法代码回溯class Solution { public void traversal(TreeNode cur, List<Intege原创 2021-05-19 20:58:40 · 176 阅读 · 1 评论 -
LeetCode 39. 组合总和
题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:candidates = [2,3,5], t原创 2021-05-08 10:10:36 · 71 阅读 · 0 评论 -
算法模板 回溯算法
回溯算法排列List<LinkedList<Integer>> res = new LinkedList<List<Integer>>();public void backtrack(int[] nums,LinkedList<Integer> track) { if(track.size() == nums.length) { res.add(new LinkedList(track)); return; } for (原创 2021-03-04 12:25:53 · 5155 阅读 · 9 评论