LeetCode Summary Search
来源:互联网 发布:萨德对中国的影响 知乎 编辑:程序博客网 时间:2024/06/10 17:52
=========================== Search ===================================
------------------------------ Backtracking ----------------------------------------
找到所有子集
39. Combination Sum 40. Combination Sum II(给定一个集合,一个target,找到所有合为target的子集)
216. Combination Sum III(找到所有k个数和为n,k范围1~9)
排序,回溯
78. Subsets(找到所有子集)
90. Subsets II(有冗余)
排序,回溯
找到所有
17. Letter Combinations of a Phone Number(给出一串数字代表的所有字母)
设置数字对应的字母,回溯
22. Generate Parentheses(给定n对括号,生成所有合法的括号字符串)
S(Discuss): 两个变量分别控制左括号和右括号。left左括号可以用几个,right右括号可以用几个。
初值,left = n; right = 0;
关键点:每当使用一个左括号时,left--,right++,为了保证合法性,每当使用一个左括号,才能用一个右括号。
分割
131. Palindrome Partitioning(分割串,使得每个部分都回文)
93. Restore IP Addresses(一串数,判断是否是IP)
Mine: 每次取1~3位,判断是否是0-255之间,然后剩下的串再继续递归,回溯
200. Number of Islands(矩阵元素1和0,1组成的是小岛,找到所有的小岛)
Mine: 朴素DFS
------------------------------------ BFS ------------------------------------------
矩阵找单词
79. Word Search(判断单词是否在矩阵中)
S1(Mine): BFS
首尾单词,字典,求变换路径
126. Word Ladder II(已知首尾单词,每次变一个字母,求路径)
容易超时:双向BFS
127. Word Ladder(字典,首位,变换一个,求路径)
朴素BFS
199. Binary Tree Right Side View(树,从右边看可以看到的结点)
Mine: 当BFS到新的层时,添加上次最后遍历的元素。
------------------------------------ DFS ---------------------------------------------
37. Sudoku Solver(解数独)
S(Discuss): 从左上角第一个开始填数,没填一个,check是否符合,符合了再下一个位置。记得回溯。
Discuss这个精简的程序非常赞。
113. Path Sum II(树,找到所有根到叶子和为sum的路径)
Mine: 朴素DFS
129. Sum Root to Leaf Numbers(树,找到所有根到叶子的总和)
Mine: 朴素DFS
Discuss: 非常精简的递归,完美!
if(root==NULL) return 0;
if (root->right==NULL && root->left==NULL) return s*10+root->val;
return sumNode(root->left,s*10+root->val)+sumNode(root->right,s*10+root->val);
257. Binary Tree Paths(树,返回所有根->叶子的路径)
Mine: general DFS
注意: 1. 只有根 2. 有负数
282. Expression Add Operators(字符串形式给一串数和一个数,找到添加+-*方式使得和为给定的数)
Mine:DFS, dfs(string num,long long int target,long long int currentSum, long long int preVal,string currentExp)
每次尝试三种符号+-*分别去DFS
332. Reconstruct Itinerary(一堆飞机票包含起点终点信息,返回航行路线)
Mine: DFS
生成
386. Lexicographical Numbers(1-n按字典序排序)
Mine: 每次往后加一位
---------------------------------- BFS/DFS both fine -------------------------------------
133. Clone Graph(复制一个图)
要点:用hash标记边是否已经生成过map< 点 , 点 >标记边。
51. N-Queens(返回所有解)
52. N-Queens(返回解的个数)
queen[i]=j 表示第i行第j列有皇后
判重,经典搜索
116. Populating Next Right Pointers in Each Node(每个节点,指向右边的节点)
117. Populating Next Right Pointers in Each Node II
301. Remove Invalid Parentheses(删除掉多余的括号)
Mine: BFS,每次去掉一个符号,检验是否合法,很慢*5
-------------------------------- Binary Search ------------------------------------------
通过控制与mid的等号来确定边界以及是否找到
33. Search in Rotated Sorted Array 81. Search in Rotated Sorted Array II
被旋转的,至少有一半是有序的,对有序的这一半进行二分查找。
II:有冗余
S1(Mine):用了map标记是否出现过,很慢
S2(Discuss):
34. Search for a Range(在有序数列中,查找target的位置范围)
二分,控制mid的赋值,来保证返回范围的左边界。
35. Search Insert Position(找到target的位置,不在则找到应该在的位置)
287. Find the Duplicate Number(n+1个数,有一个是重复的,找到这个数)
S1(Mine): 暴力枚举,非常慢!
S2(Discuss): Bianry Search
定义一个countLess函数,计算某区间比mid小的个数。
当cnt<=mid时候,说明冗余在右边,否则冗余在左边,根据此情况调整二分的方向
S3(Discuss): Linked List cycle
使用两个指针,一个快,一个慢,相遇点就是冗余点
slow = nums[slow]; fast = nums[nums[fast]];
240. Search a 2D Matrix II(在2D矩阵查找)
278. First Bad Version
------------------------------ Backtracking ----------------------------------------
找到所有子集
39. Combination Sum 40. Combination Sum II(给定一个集合,一个target,找到所有合为target的子集)
216. Combination Sum III(找到所有k个数和为n,k范围1~9)
排序,回溯
78. Subsets(找到所有子集)
90. Subsets II(有冗余)
排序,回溯
找到所有
17. Letter Combinations of a Phone Number(给出一串数字代表的所有字母)
设置数字对应的字母,回溯
22. Generate Parentheses(给定n对括号,生成所有合法的括号字符串)
S(Discuss): 两个变量分别控制左括号和右括号。left左括号可以用几个,right右括号可以用几个。
初值,left = n; right = 0;
关键点:每当使用一个左括号时,left--,right++,为了保证合法性,每当使用一个左括号,才能用一个右括号。
分割
131. Palindrome Partitioning(分割串,使得每个部分都回文)
93. Restore IP Addresses(一串数,判断是否是IP)
Mine: 每次取1~3位,判断是否是0-255之间,然后剩下的串再继续递归,回溯
200. Number of Islands(矩阵元素1和0,1组成的是小岛,找到所有的小岛)
Mine: 朴素DFS
------------------------------------ BFS ------------------------------------------
矩阵找单词
79. Word Search(判断单词是否在矩阵中)
S1(Mine): BFS
首尾单词,字典,求变换路径
126. Word Ladder II(已知首尾单词,每次变一个字母,求路径)
容易超时:双向BFS
127. Word Ladder(字典,首位,变换一个,求路径)
朴素BFS
199. Binary Tree Right Side View(树,从右边看可以看到的结点)
Mine: 当BFS到新的层时,添加上次最后遍历的元素。
------------------------------------ DFS ---------------------------------------------
37. Sudoku Solver(解数独)
S(Discuss): 从左上角第一个开始填数,没填一个,check是否符合,符合了再下一个位置。记得回溯。
Discuss这个精简的程序非常赞。
113. Path Sum II(树,找到所有根到叶子和为sum的路径)
Mine: 朴素DFS
129. Sum Root to Leaf Numbers(树,找到所有根到叶子的总和)
Mine: 朴素DFS
Discuss: 非常精简的递归,完美!
if(root==NULL) return 0;
if (root->right==NULL && root->left==NULL) return s*10+root->val;
return sumNode(root->left,s*10+root->val)+sumNode(root->right,s*10+root->val);
257. Binary Tree Paths(树,返回所有根->叶子的路径)
Mine: general DFS
注意: 1. 只有根 2. 有负数
282. Expression Add Operators(字符串形式给一串数和一个数,找到添加+-*方式使得和为给定的数)
Mine:DFS, dfs(string num,long long int target,long long int currentSum, long long int preVal,string currentExp)
每次尝试三种符号+-*分别去DFS
332. Reconstruct Itinerary(一堆飞机票包含起点终点信息,返回航行路线)
Mine: DFS
生成
386. Lexicographical Numbers(1-n按字典序排序)
Mine: 每次往后加一位
---------------------------------- BFS/DFS both fine -------------------------------------
133. Clone Graph(复制一个图)
要点:用hash标记边是否已经生成过map< 点 , 点 >标记边。
51. N-Queens(返回所有解)
52. N-Queens(返回解的个数)
queen[i]=j 表示第i行第j列有皇后
判重,经典搜索
116. Populating Next Right Pointers in Each Node(每个节点,指向右边的节点)
117. Populating Next Right Pointers in Each Node II
301. Remove Invalid Parentheses(删除掉多余的括号)
Mine: BFS,每次去掉一个符号,检验是否合法,很慢*5
-------------------------------- Binary Search ------------------------------------------
通过控制与mid的等号来确定边界以及是否找到
33. Search in Rotated Sorted Array 81. Search in Rotated Sorted Array II
被旋转的,至少有一半是有序的,对有序的这一半进行二分查找。
II:有冗余
S1(Mine):用了map标记是否出现过,很慢
S2(Discuss):
34. Search for a Range(在有序数列中,查找target的位置范围)
二分,控制mid的赋值,来保证返回范围的左边界。
35. Search Insert Position(找到target的位置,不在则找到应该在的位置)
287. Find the Duplicate Number(n+1个数,有一个是重复的,找到这个数)
S1(Mine): 暴力枚举,非常慢!
S2(Discuss): Bianry Search
定义一个countLess函数,计算某区间比mid小的个数。
当cnt<=mid时候,说明冗余在右边,否则冗余在左边,根据此情况调整二分的方向
S3(Discuss): Linked List cycle
使用两个指针,一个快,一个慢,相遇点就是冗余点
slow = nums[slow]; fast = nums[nums[fast]];
240. Search a 2D Matrix II(在2D矩阵查找)
278. First Bad Version
0 0
- LeetCode Summary Search
- Combitorial search summary
- the summary of search
- Binary Search Summary
- LC Binary-Search summary
- UCD Search Engine Project summary
- Leetcode LinkedList Summary
- LeetCode Matrix Summary
- LeetCode Questions Summary Table
- leetcode hard problem summary
- leetcode 228: Summary Ranges
- Leetcode 228 Summary Ranges
- leetcode--Summary Ranges
- LeetCode 228: Summary Ranges
- [leetcode] Summary Ranges
- 【Leetcode】Summary Ranges
- Summary Ranges - LeetCode 228
- 【LeetCode】Summary Ranges
- LeetCode Summary Math
- Servlet拦截静态图片的解决方案
- leetcode_middle_36_436. Find Right Interval
- 设置resin在linux下的默认启动
- lacp协议文档概要
- LeetCode Summary Search
- 一步一步教你怎么将AndroidLibrary提交到JCenter仓库,2017年最新版方法,解决各种坑!
- Linux基础知识学习常用视频链接
- mysql导入导出sql文件
- 虚拟机设置-NAT共享主机外网
- java.lang.UnsatisfiedLinkError解决方法汇集(转载)
- 8.4贪心法
- 样式的继承性和层叠性
- Quick Sort and Random Quick Sort