dfs
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
kSumII
结合前面的permutation和combination的DFS来解这道题。 再看看自己都错在哪里了!!! /** * @param A: an integer array. * @param k: a positive integer (k * @param target: a integer * @return a list of list原创 2016-05-28 17:01:26 · 267 阅读 · 0 评论 -
Expression Add Operators
一道求集合的dfs题。有很多的要注意的地方: 1. 为了处理, "3456237490", 9191 -> [] 我们得用long来处理数字,表现在:long curNum = Long.valueOf(curStr); 2. i是小于等于num的size,i 3. 对于乘法,要理解以下,来求解当前的结果 curRes - prevNum + prevNum * curNum4.原创 2016-07-02 08:09:09 · 198 阅读 · 0 评论 -
Remove Invalid Parentheses
参考:点击打开链接 首先还是dfs来处理。 括号总是成对出现的,因此我们只需要记录尚未匹配的(。 有三点要判断: (, 保留或者不保留。), 如果我们有未匹配的(,则有两种选择;否则,只能不保留。保留其他字符。 因为我们要移除数量最少的括号,我们应该得到最大的匹配()数量,注意下面两行的顺序。 helper(res, left.substring(1), righ原创 2016-07-02 15:19:09 · 268 阅读 · 0 评论 -
Reconstruct Itinerary
一道好题,要常做常新。当中犯了两个错误: 1. 对于[["JFK","KUL"],["JFK","NRT"],["NRT","JFK"]],会有这样的错误: ["JFK","KUL","NRT","JFK"] 2. 对于sjc,是没有queue的,所以必须判断queue为空的情况 public class Solution { List res = new LinkedList<>(原创 2016-07-26 16:00:01 · 364 阅读 · 0 评论 -
Permutation Sequence
此题,我不要求用最好的数学解法,现在只求最基本的,能bug free!!!!!!! public static String getPermutation(int n, int k) { int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = i + 1;原创 2016-06-20 07:53:16 · 207 阅读 · 0 评论 -
Combination Sum II
不同于Combination Sum I,这个是collection,是包含重复的元素。我们需要做一个判断,略过重复项。 public class Solution { public List> combinationSum2(int[] candidates, int target) { List> result = new LinkedList<>();原创 2016-06-20 14:00:35 · 250 阅读 · 0 评论 -
Combination Sum III
挺简单的一道题,也出了3个错误,如何bug free啊 public class Solution { public List> combinationSum3(int k, int n) { List> result = new LinkedList<>(); if (k == 0 || n < 1) { return resul原创 2016-06-23 08:28:24 · 233 阅读 · 0 评论 -
Strobogrammatic Number II
参考:点击打开链接 列出为0,1的情况,之后的情况皆是在此基础上产生:从中间插入来建立这个临时的字符串 public class Solution { public List findStrobogrammatic(int n) { return findStrobogrammaticHelper(n, n); } private List f原创 2016-06-23 13:27:56 · 340 阅读 · 0 评论 -
Palindrome Permutation II
一道很好的综合题,考了回文处理,排列运算。 常看常新,注意自己犯得错误。 public class Solution { public List generatePalindromes(String s) { List result = new LinkedList<>(); if (s == null || s.length() == 0) {原创 2016-06-23 20:34:57 · 297 阅读 · 0 评论 -
Permutations II
背诵。理解布尔数组的意义。 public class Solution { public List> permuteUnique(int[] nums) { List> results = new LinkedList<>(); if (nums == null || nums.length == 0) { return resul原创 2016-06-15 17:15:29 · 224 阅读 · 0 评论 -
Factor Combinations
又成一道新知。 public class Solution { public List> getFactors(int n) { List> results = new LinkedList<>(); List list = new LinkedList<>(); getFactorsHelper(n, results, list, 0);原创 2016-06-15 04:31:07 · 335 阅读 · 0 评论 -
Nested List Weight Sum
这应是很简单最入门的dfs问题,但自己却犯了两个问题, 1. 一开始自己只是想着迭代,根本没意识到是dfs问题 2. 看看注释的那个bug,肉眼没发现,最后只能自己编程发现。。。。 /** * // This is the interface that allows for creating nested lists. * // You should not implement it,原创 2016-06-08 22:25:20 · 405 阅读 · 0 评论 -
Subsets II
这个请好好理解i>0和i!=pos的区别,自己一开始认为是相同的效果,但其实是全然不同的 对于:[1,2,2] 前者:[[],[1],[1,2],[2]] 后者:[[],[1],[1,2],[1,2,2],[2],[2,2]] public class Solution { public List> subsetsWithDup(int[] nums) { List原创 2016-06-10 13:56:14 · 311 阅读 · 0 评论 -
Number of Islands
新知,扫描整个grid,将1的周围都设为0(dfs),这样有几个1,就有几个岛 至于用union-find的解法,之后研习 好了,可以先去吃午饭了 public class Solution { public int numIslands(char[][] grid) { int num = 0; if (grid == null || grid.le原创 2016-06-11 03:19:11 · 307 阅读 · 0 评论 -
Word Search
和island number有相同之处,都是要dfs遍历周围的点,并设置新值,但是在前者不需要返回结果,后者的返回结果是或的关系,而自己一开始却是按照与的结果返回的,直接思路就错了。。 public class Solution { public boolean exist(char[][] board, String word) { if (board == null原创 2016-06-12 01:46:07 · 225 阅读 · 0 评论 -
Add and Search Word - Data structure design
参照,trie的实现。 好了,可以先去上课了。 public class WordDictionary { private TrieNode root; public WordDictionary() { root = new TrieNode(); } // Adds a word into the data structure. p原创 2016-06-12 07:20:04 · 209 阅读 · 0 评论 -
Letter Combinations of a Phone Number
对于犯的那两个错误,请正视!!,尤其是第一个,否则一上来就挂了。。 public class Solution { public List letterCombinations(String digits) { List results = new LinkedList<>(); if (digits == null || digits.length() == 0)原创 2016-06-14 04:40:26 · 267 阅读 · 0 评论 -
Generate Parentheses
dfs问题,非正常的模板,脑子要活。 public class Solution { public List generateParenthesis(int n) { List results = new LinkedList<>(); if (n < 1) { return results; } g原创 2016-06-14 14:56:11 · 223 阅读 · 0 评论 -
Combination Sum
这道题做成这样子。第二个错误忘加了,也就罢了,第一个是怎么想的,在list里加sum做啥的。昨晚糊涂了,怎么刚才也没看出来。这是怎么了,再痛苦,委顿也不是这样的吧!!!!!! public class Solution { public List> combinationSum(int[] candidates, int target) { List> result =原创 2016-06-15 02:46:30 · 257 阅读 · 0 评论 -
Word Pattern II
这道题得和I联动 boolean res = false; Map map = new HashMap<>(); Set set = new HashSet<>(); public boolean wordPatternMatch(String pattern, String str) { helper(pattern, 0, str, 0原创 2016-07-22 06:23:26 · 261 阅读 · 0 评论