![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯
文章平均质量分 64
追光者2020
没有实力的愤怒毫无意义。
展开
-
leetcode 93. 复原 IP 地址(回溯)
题目描述给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。示例 1:输入:s = “25525原创 2021-09-09 10:29:07 · 186 阅读 · 0 评论 -
LeetCode 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,2,1,2], target =原创 2021-08-22 15:41:53 · 91 阅读 · 0 评论 -
leetcode 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)为什么不直接返回? 以往的回溯算法都有返回的条原创 2021-07-17 15:40:54 · 120 阅读 · 0 评论 -
LeetCode 140 单词拆分Ⅱ(回溯)
题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = “catsanddog”wordDict = [“cat”, “cats”, “and”, “sand”, “dog”]输出:[“cats and dog”,“cat sand dog”]示例 2:输入:s =原创 2021-06-09 15:07:57 · 135 阅读 · 0 评论 -
LeetCode 131 分割回文串(回溯)
题目描述给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]示例 2:输入:s = “a”输出:[[“a”]]方法一:普通的判断回文串方法+回溯类似于组合问题,组合问题的回溯使用到的是 u 这种参数,记录的是开始位置。当遍历到达字符串结束位置时,记录结果,此时记录的是叶子节点的结果。组合问题:选取一个原创 2021-06-08 11:32:32 · 171 阅读 · 0 评论 -
LeetCode 22 括号生成
题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]合法的括号是左右括号数是相等的,且任意括号前缀中左括号个数大于等于右括号个数。什么时候添加左括号呢?当左括号个数小于给定数目 n 时,什么时候添加右括号呢?当左括号个数大于右括号个数时添加。本题目中没有显式的回溯过程,其实c原创 2021-06-07 11:13:43 · 62 阅读 · 0 评论 -
day9:51. 数字排列(回溯)
问题描述:输入一组数字(可能包含重复数字),输出其所有的排列方式。样例:输入[1,1,2]输出[[1, 1, 2], [1, 2, 1], [2, 1, 1]]采用递归的思路,对于一个给定的数组,首先要排好序,如果遇到数组里面有重复数字的情况,就要规定好这几个重复数字的出现顺序,比如上面的样例,第一个 1 出现之后,当放置第二个 1 的时候规定这个 1 在上一个 1 出现位置的后面,前提是第一个 1 放置的时候要从空缺位置中最前面的位置开始放置,否则这样的规定顺序会不成立。首先确定sta原创 2020-06-24 10:32:45 · 213 阅读 · 0 评论 -
leetcode37 解数独
题目描述编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。题解:回溯遍历顺序都是从空格开始依次向后遍历。两种回溯模板:一种是先将数独中的信息保存到三个bool数组中,一遍后续判断是否行列以及3*3宫格内是否出现过该数字,如果遍历到了某一行最后一列,那么就要返回到下一行执行,也原创 2021-05-13 10:56:48 · 110 阅读 · 1 评论 -
N皇后问题 and leetcode 51 N皇后
题目描述两种搜索方式:一种是按照行搜索,一种是按照单个位置选还是不选来搜索。const int N=10010;class Solution {public: /** * * @param n int整型 the n * @return int整型 */ int res=0; bool col[N],dig[N],udig[N];//列矩阵,对角矩阵,反对角矩阵 int Nqueen(int n) { // w原创 2021-05-12 17:27:12 · 167 阅读 · 0 评论 -
leetcode 79 子集
题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]链接:https://leetcode-cn.com/problems/subsets题解:回溯算法回溯与DFS的区别:回溯需要撤销选择,原创 2021-05-12 15:01:32 · 110 阅读 · 0 评论