常做常新
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
Minimum Window Substring
传承自上一题,但又有很多要注意的地方。尤其是这个:map.put(s.charAt(prevIdx), map.get(s.charAt(prevIdx)) + 1); //if (map.get(s.charAt(prevIdx)) >= 0) { "bba", "ab" => "bba" i原创 2016-06-30 18:23:49 · 311 阅读 · 0 评论 -
Top K Frequent Elements
先贴出用了heap的做法,稍后要学会用桶排序来做。public class Solution { public List topKFrequent(int[] nums, int k) { List res = new LinkedList<>(); if (nums == null || nums.length == 0) {原创 2016-07-26 17:36:12 · 225 阅读 · 0 评论 -
Wildcard Matching
这几天过的很混沌,但又。。。但愿是好的,我们的美好,像郭靖一样:坚持,努力。参考:点击打开链接之所以有这一行: idmatch++;是因为idmatch的位置已经match了public class Solution { public boolean isMatch(String s, String p) { int ids =原创 2016-07-05 19:34:29 · 274 阅读 · 0 评论 -
Best Time to Buy and Sell Stock III
把一个数组拆成两个数组,即处理两个stock I的问题,这样就求解了。left[0] 和right[length - 1] 都为0,因为这时各自都只剩下一个数组来处理了。很好的参考:点击打开链接public class Solution { public int maxProfit(int[] prices) { if (prices == null || pr原创 2016-07-17 01:10:58 · 238 阅读 · 0 评论 -
Sort Colors II
参考点击打开链接每次只对两个颜色min 和max排序,其他的都不变,于是中间再用I的方法即可求解。class Solution { /** * @param colors: A list of integer * @param k: An integer * @return: nothing */ public void sortCo原创 2016-07-17 01:51:57 · 378 阅读 · 0 评论 -
Convert Binary Search Tree (BST) to Sorted Doubly-Linked List
首先是中序遍历其次记住这是要做成double list。从TreeNode head, prev;private void traverse(TreeNode node){ if (node == null) { return; } traverse(node.left); node.left = prev; if (prev != null) { prev.right = n原创 2016-07-18 05:23:52 · 1306 阅读 · 0 评论 -
Task Schedule II
参考:点击打开链接followup是tasks是无序的.一开始是有序的,比如说1, 1, 2, 1,一定要先执行第一个task1,然后等task1恢复,再执行第2个task1,再执行task2..... followup是无序的,就是不用按给的顺序执行,也就是可以先执行task1,然后task1还没恢复时,先执行task2, etc......这次得记录每个task的freque原创 2016-07-29 05:29:34 · 324 阅读 · 0 评论 -
Get the median of k sorted arrays
public double mergekSortedArrays(int[][] arrays) { // Write your code here List list = new LinkedList<>(); double res = 0; if (arrays == null || arrays.length == 0原创 2016-07-19 10:32:14 · 600 阅读 · 0 评论 -
Kth Smallest Element in a Sorted Matrix
public int kthSmallest(int[][] matrix, int k) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { throw new IllegalArgumentException(""); } Prior原创 2016-08-04 12:50:13 · 277 阅读 · 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 评论 -
Regular Expression Matching
参考:点击打开链接对于这种几乎最高难度的题,甚于word ladder II,要放平心态。坚持,加油!public class Solution { public boolean isMatch(String s, String p) { if (p.length() == 0) { return s.length() == 0;原创 2016-07-04 09:02:21 · 294 阅读 · 0 评论 -
Largest Rectangle in Histogram
单调栈,课上的知识今天终于用上了,不过好像就用上这三个字了,哈哈哈哈。很赞的参考:点击打开链接仔细我们犯得错误!stack里保存的是位置index,高度得用heights[stack.peek()]来得到。public class Solution { public int largestRectangleArea(int[] heights) { if (heigh原创 2016-07-01 08:05:43 · 285 阅读 · 0 评论 -
Sudoku Solver
参考小莹子:点击打开链接public class Solution { public void solveSudoku(char[][] board) { if (board == null || board.length == 0 || board[0].length == 0) { return; } help原创 2016-07-24 10:32:06 · 235 阅读 · 0 评论 -
Fraction to Recurring Decimal
最好的参考:点击打开链接理解这几行就好了:nu = nu*10; sb.append(nu/de); nu = nu%de;public class Solution { public String fractionToDecimal(int numerator, int denominator) {原创 2016-07-24 13:26:21 · 228 阅读 · 0 评论 -
Power of Four
这个不错,红红火火恍恍惚惚哼哼哈嘿public class Solution { public boolean isPowerOfFour(int num) { int count1 = 0; int count0 = 0; while (num > 0) { count1 += num & 1;原创 2016-07-24 15:09:44 · 216 阅读 · 0 评论 -
Ugly Number II
参考:点击打开链接根据提示中的信息,我们知道丑陋数序列可以拆分为下面3个子列表:(1) 1×2, 2×2, 3×2, 4×2, 5×2, …(2) 1×3, 2×3, 3×3, 4×3, 5×3, …(3) 1×5, 2×5, 3×5, 4×5, 5×5, …仔细观察上述三个列表,我们可以发现每个子列表都是一个丑陋数分别乘以2,3,5,而要求的丑陋数就是从已经生原创 2016-07-24 16:43:38 · 246 阅读 · 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 评论 -
The Skyline Problem
参考:点击打开链接要用最大堆,是保证,最高的楼总能展现在最外面,那些矮的楼都被覆盖了。循环中只要是左坐标,就要加入res中,只要这个左坐标还没有被用过,想这个例子就好了:[2, 10], [3, 15], [5, 12], [7, 15]遇到[5, 12],这时peek出来的是15(因为这是最大堆),而15在上次循环中已经被用过,压入了res中,而12刚被压入,还没有结束,所以不能原创 2016-07-03 09:21:00 · 318 阅读 · 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 评论