2014年2月3日

LeetCode: Combination Sum II

摘要: Given a collection of candidate numbers (C) and a target number (T), find all unique combinations inCwhere the candidate numbers sums toT.Each number inCmay only be usedoncein the combination.这里数字不需要重复出现,所以使用dfs的时候,循环从上一次的下一个位置开始就可以了。但是这样会出现重复的结果。比如[1,2,3,1],因为第一个位置可以选两次1,所以可能会出现重复结果。所以这里排序是为了方便避免重复 阅读全文

posted @ 2014-02-03 14:03 longhorn 阅读(254) 评论(0) 推荐(0) 编辑

LeetCode: Combination Sum

摘要: Given a set of candidate numbers (C) and a target number (T), find all unique combinations inCwhere the candidate numbers sums toT.Thesamerepeated number may be chosen fromCunlimited number of times.找到全部解,一看就是一个dfs的节奏。dfs需要判断循环起始的位置。需要注意的地方是,因为一个数字可以无限次的出现,所以每次dfs的起始位置不是上一次加1,而是与上一次相同,这样的话就可以重复选一个数字 阅读全文

posted @ 2014-02-03 13:58 longhorn 阅读(159) 评论(0) 推荐(0) 编辑

LeetCode: Palindrome Partitioning II

摘要: Given a strings, partitionssuch that every substring of the partition is a palindrome.Return the minimum cuts needed for a palindrome partitioning ofs.这种求最优解的问题就不适合用dfs做了,最优解一般都是DP,比遍历所有情况比较快。这道题的dp很好想,就是i之前的最优解=min(j之前的最优解+1) j result[j] + 1) min = result[j]+1;11 }12 }13... 阅读全文

posted @ 2014-02-03 13:33 longhorn 阅读(202) 评论(0) 推荐(0) 编辑

LeetCode: Palindrome Partitioning

摘要: Given a strings, partitionssuch that every substring of the partition is a palindrome.Return all possible palindrome partitioning ofs.像这种求所有可能性的问题就不适合用DP做,比较适合dfs。思路就是从头扫描,按顺序将palindrome放入结果中。需要注意的是,这里判断是否为palindrome的方法是,将string反转,然后比较和原来的是否相同。 1 public static ArrayList> partition(String s) { 2 . 阅读全文

posted @ 2014-02-03 13:17 longhorn 阅读(165) 评论(0) 推荐(0) 编辑

LeetCode: Anagrams

摘要: Given an array of strings, return all groups of strings that are anagrams.第一次面试dropbox就是面的anagrams。在面试前还恰巧看到了这个题,最后答得还是一塌糊涂。我在面试的时候想到了对string字符排序,但我忘记了hashtable这回事了。这个题就是把string的字符排下序,然后放到一个hashmap中,如果有其他string和这个能匹配上,就放到result中;否则放入map中。就这么简单。。。。哎。。。。 1 public ArrayList anagrams(String[] strs) { 2 阅读全文

posted @ 2014-02-03 07:09 longhorn 阅读(129) 评论(0) 推荐(0) 编辑

LeetCode: Permutation I & II

摘要: Given a collection of numbers, return all possible permutations.For example,[1,2,3]have the following permutations:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], and[3,2,1].思路有两个,一个是dfs,一个是递归。dfs的关键是,有一个visited数组来标记哪些元素访问过。这个非常重要,因为我第一次面试就卡在了这个上。。。 1 public class Solution { 2 public static ArrayList> . 阅读全文

posted @ 2014-02-03 06:38 longhorn 阅读(424) 评论(0) 推荐(0) 编辑

导航