DFS
豌豆射手GCC
这个作者很懒,什么都没留下…
展开
-
DFS+记忆化搜索(剪枝) 329. 矩阵中的最长递增路径
329. 矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最长递增路径原创 2020-06-20 12:42:30 · 219 阅读 · 0 评论 -
堆栈迭代+DFS递归 1028. 从先序遍历还原二叉树
1028. 从先序遍历还原二叉树我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。示例 1:输入:"1-2--3--4-5--6--7"输出:[1,2,5,3,4,6,7]示例 2:输入:"1-2--3--原创 2020-06-18 11:58:46 · 204 阅读 · 0 评论 -
DFS+细节 306. 累加数
306. 累加数累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。示例 1:输入: "112358"输出: true 解释: 累加序列为: 1, 1, 2, 3, 5, 8 。1 + 1 = 2原创 2020-06-16 11:14:58 · 219 阅读 · 0 评论 -
DFS(剪枝)+BFS(降重)+set去重 301. 删除无效的括号
301. 删除无效的括号删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: "()())()"输出: ["()()()", "(())()"]示例 2:输入: "(a)())()"输出: ["(a)()()", "(a())()"]示例 3:输入: ")("输出: [""]DFS(超时)cnt判断当前括号是否符合要求;给出结果条件,符合时加入结果set;最后返回set转vector。cla原创 2020-06-10 13:36:11 · 176 阅读 · 0 评论 -
动态规划 回溯剪枝 139. 单词拆分 140. 单词拆分 II
139. 单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = "applepenapple",原创 2020-05-23 14:03:54 · 251 阅读 · 0 评论 -
回溯+剪枝 131. 分割回文串
回溯每次递归查看tmp是否为回文字符串数组;class Solution {public: vector<vector<string>> partition(string s) { backtrack(s); return res; }private: vector<vector<string>> res; vector<string> tmp; void backtr原创 2020-05-21 14:01:53 · 108 阅读 · 0 评论 -
哈希表初始化+双向BFS+剪枝优化(字典树+记录路径最短距离+记录总最短距离) 127. 单词接龙 126. 单词接龙 II
127. 单词接龙给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = "hit",e原创 2020-05-20 15:47:51 · 414 阅读 · 0 评论 -
回溯+加减乘+for循环每种数字 282. 给表达式添加运算符
282. 给表达式添加运算符给定一个仅包含数字 0-9 的字符串和一个目标值,在数字之间添加二元运算符(不是一元)+、- 或 * ,返回所有能够得到目标值的表达式。示例 1:输入: num = "123", target = 6输出: ["1+2+3", "1*2*3"] 示例 2:输入: num = "232", target = 8输出: ["2*3+2", "2+3*2"]示例 3:输入: num = "105", target = 5输出: ["1*0+5","10-5"]原创 2020-05-17 11:24:59 · 245 阅读 · 0 评论 -
回溯+放点+列举所有可能条件 93. 复原IP地址
93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]解题回溯算法,对给定s的每个位置尝试放’.’。结束条件点放完+s遍历完+最后的数字满足要求<=255;失败条件数字遍历完点还没放完放点条件前面不为’.’+还有点可放;不原创 2020-05-15 13:44:28 · 123 阅读 · 0 评论 -
dfs回溯+剪枝+去除相同解+无相同数字每个数字用多次/有相同数字每个数字用一次 39. 组合总和 40. 组合总和 II
39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解...原创 2020-05-06 22:16:48 · 172 阅读 · 0 评论 -
哈希+回溯+bitset+位运算(优化存储空间)+优化填写顺序 37. 解数独
37. 解数独编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给...原创 2020-05-05 23:11:58 · 263 阅读 · 0 评论 -
回溯算法 22. 括号生成
22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]来源:力扣(LeetCode)链接:https://leetco...原创 2020-04-30 23:13:19 · 206 阅读 · 0 评论 -
DFS+剪枝去重+排序+回溯算法+DFS遍历叶子节点 47. 全排列 II
47. 全排列 II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解...原创 2020-04-25 20:00:47 · 284 阅读 · 1 评论 -
回溯算法+DFS遍历叶子节点+next_permutation 46. 全排列
46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络...原创 2020-04-25 18:59:01 · 160 阅读 · 0 评论 -
DFS+遍历优化(四个方向的递归优化为两个方向的递归) 面试题13. 机器人的运动范围
面试题13. 机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8...原创 2020-04-24 21:10:34 · 401 阅读 · 0 评论 -
DFS+最大连通子图数量 200. 岛屿数量+130. 被围绕的区域
200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3...原创 2020-04-20 13:00:49 · 582 阅读 · 0 评论 -
1018 DFS求最短路径+记录路径+路径结点权值的比较 Public Bike Management (30分)
1018 Public Bike Management (30分)There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and retur...原创 2020-04-13 21:16:18 · 486 阅读 · 0 评论 -
C DFS+最短路径+邻接表表示+地铁换乘(map保存地铁线路) 1131 Subway Map (30分)
1131 Subway Map (30分)In the big cities, the subway systems always look so complex to the visitors. To give you some sense, the following figure shows the map of Beijing subway. Now you are supposed t...原创 2020-04-12 22:49:56 · 2346 阅读 · 0 评论 -
C 06-图2 Saving James Bond - Easy Version (25分)
This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land ...原创 2020-04-09 01:23:47 · 184 阅读 · 0 评论 -
DFS BFS 002:Pots
002:Pots总时间限制: 1000ms 内存限制: 65536kB描述You are given two pots, having the volume of A and B liters respectively. The following operations can be performed:FILL(i) fill the pot i (1 ≤ i ≤ 2) f...原创 2020-03-19 00:47:50 · 167 阅读 · 0 评论 -
DFS 003:棋盘问题
003:棋盘问题总时间限制: 1000ms 内存限制: 65536kB描述在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。输入输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋...原创 2020-03-17 22:24:14 · 320 阅读 · 0 评论 -
DFS 001:红与黑
001:红与黑描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖...原创 2020-03-17 19:10:15 · 271 阅读 · 0 评论 -
DFS+剪枝 BFS 鸣人和佐助
题目:鸣人和佐助佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢?已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸的手下才能到这些位置。鸣人有一定数量的查克拉,每一个单位的查克拉可以打败一个大蛇丸的手下。假设鸣人可以往上下左右四个方向移动,每移动一个距离需要花费1个单位时间,打败大蛇丸的手下不需要时间。如果...原创 2020-03-17 16:02:31 · 615 阅读 · 0 评论 -
DFS 002:A Knight's Journey
002:A Knight’s Journey总时间限制: 1000ms 内存限制: 65536kB描述BackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the wor...原创 2020-03-17 20:33:37 · 235 阅读 · 0 评论