简述各题

283 Move Zeros: 这题我也是醉了,竟然想了半天,用插入排序就好,真是太久没刷题了么。

341 Flatten Nested List Iterator: 主要是iterator的用法,和要看清nestedInteger的描述。

43 Multiply Strings: 算法精妙,注意pos[p1] += sum / 10;还有熟悉StringBuilder。

206 Reverse Linked List: 注意一下逻辑即可 很简单。

215 Kth Largest Element in an Array: 快速排序,注意各种边界条件。

91 Decode Ways: dp公式,两个两个推,注意substring含前不含后,dp[n + 1], Integer.valueOf。

236 Lowest Common Ancestor of a Binary Tree: 左右都有就是root,光左/右有就左/右,注意返回root的情况。

139 Word Break: 注意dp公式: result[i] || (result[j] && wordDict.contains(sub))。

20 Valid Parentheses: 注意最后的 if(stack.isEmpty()),最后要判断栈是不是空的。

173 Binary Search Tree Iterator: 注意stack怎么加。先左到底,然后加根,然后再右边。

15 3Sum: 注意当一定是先比较nums[i]和nums[i-1],如果是比较i+1和i的话会漏掉结果。

75 Sort Colors: 注意只扫一遍并且in-place,所以用while,是blue的时候i不变。

334 Increasing Triplet Subsequence: min和second,更新min,else if,更新second,如不更新,返回true。<=!

377 Combination Sum IV: 注意递推公式,应该很简单的为什么一时就忘了。。result[i] += result[i - num]

146 LRU Cache: if (get(key) != -1),这里不能是判断哈希表里是否有,因为可能曾经存过,被移除了。

38 Count and Say: 注意prev和cur实时的状态,注意循环的起始点都是1。

209 Minimum Size Subarray Sum: 注意i - j+ 1,注意各种算法的具体实现。nlogn未实现。

325 Maximum Size Subarray Sum Equals k: put(0, -1), 巧妙应用prefix,求max,只保留第一个prefix。

146 LRU Cache: 注意各种细节,get中要先remove current,set中要先判断capacity,然后map中加入cur。

1 Two Sum: 只做了hashmap版本,比较简单,two pointers的版本注意各种复制,要返回原来的indice。

15 3Sum: 注意要查重,去掉重复的数字,每次都要去。可以再做一次。

98 Validate Binary Search Tree: recursive版本注意min max,stack版本注意怎么中序遍历,注意p和cur,再做!

17 Letter Combinations of a Phone Number: BFS注意cur和i, DFS sb 注意backtracking。
String cur = mapping[Character.getNumericValue(digits.charAt(depth))];

314 Binary Tree Vertical Order Traversal: TreeMap方法没做。记得加min和max,两个queue,一个hashmap。

50 Pow(x, n): 注意Integer.MIN_VALUE的情况,以及n<0的情况。

69 Sqrt(x): 还没做。。。

49 Group Anagrams: String.valueOf(c), return的时候新建。

274 H-Index: 注意递推方法,j = length - 1 - i。

275 H-Index II: 二分法,注意边界判断。

23 Merge k Sorted Lists: 注意往结果加点要new ListNode(temp.val),这样没有next。compare要public int。

26 Remove Duplicates from Sorted Array: 简单,注意限制i < nums.length就行。

207 Course Schedule: 拓扑排序,注意去重。 if(graph[pre][post] == 0) indegree[post]++。

208 Course Schedule: 和207几乎一样,用不同的做法做,记得最后循环的是i < prerequisite.length。

269 Alien Dictionary: 注意if(j+1 <= word1.length()-1 && j+1 > word2.length()-1) return "";!

71 Simplify Path: 用stack。注意实时要判断stack是否是空的,以及最后要去掉最后一个“/"。

261 Graph Valid Tree: UF, 注意要加一步判断是否是cycle。

78 Subsets: DFS方法注意循环时i从depth开始,进去是i + 1; 大神方法注意各种new。

79 SubsetsII: 和上题几乎一样,加个HashSet就可以。如果不加set,排序后就先判断后一个数和前一个是否一样。

286 Walls and Gates: d的设置很巧妙,必须用deque,后面加,前面出。room[m][n] = room[i][j] + 1。dfs没看。

79 Word Search: 注意visited[][]要backtracking置零。

127 Word Ladder: 注意要用.equals方法,注意如果wordList里不含新词则continue,set里有新词也continue。

221 Maximal Square: 注意dp中要判断当前格子是不是1,最后返回的是max * max。

85 Maximal Rectangle: 注意,用stack,pop时要看栈是不是空的,计算时也要注意加减1。

128 Longest Consecutive Sequence: set没有cur直接continue,最后算res=up-down+1。而且up和down要=cur。

161 One Edit Distance: 最后要再判断两个字符串的长度是否差1,因为如果完全相同,或前面一样但长度差不止1都不行。

265 Paint House II: 注意pre1,pre2,min1,min2的取值,注意初始化,注意判断条件,if,else if。再做!!

252 Meeting Rooms: 注意先排序,然后重写方法。

253 Meeting Rooms II: 要用heap做,不要想得太简单!可能第三个第四个会议开始了第一个还没结束!再做!

208 Implement Trie (Prefix Tree): 注意一定要copy,search和insert里一定要注意isKey。

133 Clone Graph: 注意map.get(n).neighbors.add(map.get(neighbor)),邻居也一定要加新的!

117 Populating Next Right Pointers in Each Node II: 注意new levelHead和needle的用法。两层循环。

25 Reverse Nodes in k-Group: 注意 while(true) 和 head = prev.next。

234 Palindrome Linked List: 先找中点,然后翻转后半部分比较。注意一个ListNode的情况。

278 First Bad Version:比较简单没有具体做,就是二分法。注意最后要做一次判断。可以再做。

88 Merge Sorted Array:简单的插入排序。

26 Remove Duplicates from Sorted Array: 简单,也是插入,就是注意要放进去新的数组。

44 Wildcard Matching:注意细节,第一层是i循环;*可以为空所以遇到只加j;第二个else里不用判断j,j可能=length。

56 Merge Intervals: 比较简单,注意先排序,要重写compare,然后比较两个interval的end即可。

57 Insert Interval: 加isInserted的flag,注意newInt在最后和new.start>l.start&&new.end>l.end的情况。

211 Add and Search Word - Data structure design: 注意dfs的用法,要自己新建root。注意.的情况。

273 Integer to English Words: 注意belowTwenty要返回[num - 10], belowHundred要加“”,最后要trim。

10 Regular Expression Matching: 1.注意初始化,和空串比;2.注意最后三种情况。再做!!

311 Sparse Matrix Multiplication: 仔细分析矩阵相乘的模式,三层循环,注意i,j,k。

282 Expression Add Operators: 挺难的,注意long和各种情况,需要prevNum和curNum。

301 Remove Invalid Parentheses:注意各种情况,max,maxcount,count,backtracting。

28 Implement strStr():注意循环里没有判断条件,不然会缺乏return。或者用while。

121 Best Time to Buy and Sell Stock: 注意看清是哪一题,这题很简单,设min即可。

71 Simplify Path: 注意是'.'的情况,经常要判断stack是不是空的。最后如果stack不空要去掉最后一个/。

76 Minimum Window Substring: 注意细节,循环的位置,要设的变量。

33 Search in Rotated Sorted Array: 两条线,分情况分析,比较清晰的binary search。

218 The Skyline Problem: 做法是先建立height,再建最大堆,再遇到左边offer,右边pop,更新keypoint。最大堆!

67 Add Binary: 注意最后还要加上carry位。注意reverse啊sb啊什么的用法。

257 Binary Tree Paths: 注意一下递归,不能是node != null的情况哟~

285 Inorder Successor in BST: 再多记几遍inorder traverse的做法,注意一定要改变cur!看recursive怎么做。

results matching ""

    No results matching ""