[✅]Kickstart_2018_Practice_ProblemC_SortItinerary
[✅]Kickstart_2018_Practice_ProblemB_Googol String
[✅]Kickstart_2018_RoundA_Problem_A
[❌]Kickstart_2018_RoungB_ProblemA_No Nice
- 写是写出来了,但是要跑很久,估计会超时。用的还是遍历的方法,需要想一下更快的。
[✅]Kickstart_2018_Practice_ProblemA_GBus count
[✅]Kickstart_2018_RoundH_ProblemA_BigButtons
[⭐]Kickstart_2018_RoundH_ProblemB_Mural
[❌]Kickstart_2018_RoundH_ProblemC_LetMeCountTheWays
[❌]Kickstart_2018_RoungG_ProblemA_Product Triplets
-
一开始没想清楚,后来提交错误以后一个个加if变得很丑,重新想思路没想出来。
-
这里 是类似题目的巧妙解法,条件简单了一些因为提供了ratio。这题还要再想一下。
[⭐]Kickstart_2018_RoundB_ProblemB_Sherlock and the Bit Strings
- small test完成了,large test复杂了很多,想十分钟没想出来,之后继续。
[⭐] 11. Container With Most Water
- 看了很机智的答案,还有数学证明23333,复杂度是O(N)的。最简单的就暴力O(N^2)。
[✅] 12. Integer to Roman
[✅] 13. Roman to Integer
- 看了自己以前的答案,太机智了!
- 要多熟悉一下链表的用法
[✅] 3. Longest Substring Without Repeating Characters.md
[⭐]. 4. Median of Two Sorted Arrays.md
- 果然是hard型的题目,好好想下噢!
[✅]19. Remove Nth Node From End of List.md
[⭐]25. Reverse Nodes in k-Group.md
- 写出来了但是写了半小时,不够熟练。
[✅] 30. Substring with Concatenation of All Words
[✅] 26. Remove Duplicates from Sorted Array
[⭐] 32. Longest Valid Parentheses.md
- 自己没写出来,超机智的方法!!
[✅] 33. Search in Rotated Sorted Array
[✅] 34. Find First and Last Position of Element in Sorted Array
[✅] 35. Search Insert Position
- 看了答案w
[⭐] 41. First Missing Positive
- 机智!!
- 自己写出来啦,但是看到的方法超简单,四行完成!学会用tuple!
[✅] 21. Merge Two Sorted Lists
[⭐] 15. 3Sum](https://github.com/Zhouzhiling/kickstart/blob/master/15.%203Sum.md)
- debug了很久,想清楚边界条件再写。
- 自己写的递归超时了orz。 跪拜的巧妙解法!!!
- 同上解法。
-
不难,学到了自定义规则来sort的写法。
-
3/24 重写了java版本。注意java自定义sort的方法:
-
class Sort_Start implements Comparator<Interval> { public int compare(Interval a, Interval b) { return a.start-b.start; } } ... Collections.sort(intervals, new Sort_Start());
- 写了半天
- 多种情况的二分查找要多练练
- 初始想法是对的,但是没想那么深入。
[⭐⭐] 76. Minimum Window Substring
- 寻找substring的template,好好学一下!
- 用上述template成功完成!
[⭐] 5. Longest Palindromic Substring
[✅] 80. Remove Duplicates from Sorted Array II
[✅] 82. Remove Duplicates from Sorted List II
[✅] 83. Remove Duplicates from Sorted List
今天没刷题...在看声入人心和风味人间...检讨...
今天平安夜和朋友出去玩了,也没刷题...
今天圣诞刷什么题呀!
最后一天划水我发誓,明天开始认真!
quq
quq
今天是复习tree的一天!
[⭐] 94. Binary Tree Inorder Traversal.md
[✅] 92. Reverse Linked List II
[✅] 98. Validate Binary Search Tree.md
[✅] 102. Binary Tree Level Order Traversal
今天同样是复习tree的一天!
[✅] 103. Binary Tree Zigzag Level Order Traversal
[✅] 104. Maximum Depth of Binary Tree
[✅] 106. Construct Binary Tree from Inorder and Postorder Traversal
[✅] 107. Binary Tree Level Order Traversal II
[✅] 108. Convert Sorted Array to Binary Search Tree
[✅] 109. Convert Sorted List to Binary Search Tree
[⭐] 105. Construct Binary Tree from Preorder and Inorder Traversal
[✅] 111. Minimum Depth of Binary Tree
[✅] 114. Flatten Binary Tree to Linked List
[✅] 116. Populating Next Right Pointers in Each Node
[✅] 121. Best Time to Buy and Sell Stock
[✅] 122. Best Time to Buy and Sell Stock II
[⭐] 115. Distinct Subsequences
跳过了难的,TODO:
[❌]126. Word Ladder II
[❌]124. Binary Tree Maximum Path Sum
[❌]123. Best Time to Buy and Sell Stock III
[✅] 129. Sum Root to Leaf Numbers.md
[⭐] 124. Binary Tree Maximum Path Sum.md
[⭐] 128. Longest Consecutive Sequence.md
[⭐] 131. Palindrome Partitioning.md
[⭐] 132. Palindrome Partitioning II.md
[✅] 134. Gas Station
[✅] 137. Single Number II
[⭐] 133. Clone Graph
[⭐] 136. Single Number
[⭐] 135. Candy
[✅] 138. Copy List with Random Pointer
[⭐] 140. Word Break II
[⭐] 139. Word Break
[⭐] 141. Linked List Cycle
[⭐] 142. Linked List Cycle II
[⭐] 143. Reorder List
第一波刷题在过年的时候中止了,在二月的最后一天拿到了Yale MS,所以被逼着不得不开始找实习,重新刷题。因为旧的题目可能本身也手生了,所以打算把做过的120道重新再来一遍,之后如果还有时间的话就继续做新题。
开始啦!!!
-
Add Two Numbers.md
- 一开始写的重复代码段很多,有三个while,里面的代码几乎相同。这点看了discussion以后可以改进。
-
Median of Two Sorted Arrays
- 方法没变,double 类型的除法注意一下。基础都忘了。1/2和1/2.0 能一样吗????
-
Longest Palindromic Substring
- 写了很久,边界条件判断了半天,重写。
- 3/2重写完毕。依然需要看了方法才能想起expand函数。
-
ZigZag Conversion
-
写出来了,但很冗长,最好重写。
-
初始化字符串列表的方法:
L = [""] * numRows
-
合并字符串列表的方法:Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
"".join(L)
-
-
Reverse Integer
- 不难,注意小字审题就行,溢出归零。不导入math的时候,指数的写法可以用pow(2, 31)这样。
-
String to Integer (atoi)
- 不难。注意
str[0] == '-'
和str[0] is '-'
的区别。前者比较是不是相同的字符,后者比较内存空间是不是一样。 - 判断当前char是不是数字:
c.isnumeric()
- char转成int:
int(c)
- 不难。注意
-
Palindrome Number
- 不难。记得先判断三种情况。负数直接false;0~9直接true;大于9并且以0结尾直接false。
-
Container With Most Water
-
代码会写,要会解释证明
-
3/4 会证明!
-
-
Integer to Roman
-
Roman to Integer
- 简单。
-
Longest Common Prefix
- 不难,但没有做到bug-free。再写一遍。
- 3/2重写完毕,nice。
-
3Sum
- 如何避免重复没写出来,重写。
- 3/1重写完成。
- 3/2重写完成
-
3Sum Closest
- 原理同上,就算不排除重复也能过,所以重写上面的15就行了。
-
4Sum
- 套用之前用过的3Sum,再加一层即可。再加层的时候有比较巧妙的写法:
- 3/2 重写完毕。
def fourSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[List[int]]
"""
nums.sort()
res = []
for idx in range(len(nums)-3):
if idx != 0 and nums[idx] == nums[idx-1]:
continue
for ite in self.threeSum(nums[idx+1:],target-nums[idx]):
res.append([nums[idx]]+ite)
return res
- Valid Parentheses
- 简单!
-
Merge two link list
- 简单
-
Generate Parentheses
-
没想出来,重写。
-
3/3 没想出来,重写。
-
-
Merge k Sorted Lists
-
Swap Nodes in Pairs
- 不难
-
Reverse Nodes in k-Group
- 还行,比较麻烦。思路是对的。进入reverse函数之前要记得把tail.next置None,不然会持续循环。
-
Remove Duplicates from Sorted Array
-
Remove Element
-
Implement strStr()
- 简单,一次过。
- 这都什么傻子要求啊orz
-
Divide Two Integers
-
之前做的思路就挺好的,速度和内存表现都很好
-
其中判断符号的时候:
# 写法复杂但是计算很快 sign = dividend > 0 and divisor > 0 or dividend < 0 and divisor < 0 # 用乘法比较会慢很多很多 # sign = dividend * divisor > 0
-
-
Next Permutation
- 注意range(50,0,-1),写法是(start, end, step_length)
-
Next Permutation
-
傻子,重写。如何判断下一次的permutation?
-
如果从末尾往前看,数字逐渐变大,到了2时才减小的,然后我们再从后往前找第一个比2大的数字,是3,那么我们交换2和3,再把此时3后面的所有数字转置一下即可
-
nums.sort()
和sorted(nums)
的区别 -
3/3重写完毕,一次过。
-
-
Longest Valid Parentheses
- 重写。自己想的方法超时了。之前用的是discussion里面的神仙思路。
stack.insert(0,-1)
在stack下标0的地方放一个-1.注意写法。- 3/3重写,1.5次过。
-
Search in Rotated Sorted Array
-
重写。二分查找。怎么查的。这个都不能bug-free,你面什么狗?
-
3/3重写。几乎一遍过,冒号等小细节
-
-
Find First and Last Position of Element in Sorted Array
-
和上面一样。 熟练掌握二分就可以。
-
一遍过。
-
-
Search Insert Position
- 简单
-
Valid Sudoku
- 真是简单粗暴的方法呢。
-
Count and Say
- 不难
-
Combination Sum
- 递归版本写得出来。注意要去重(只取当前index的后半部分即可)。
- 迭代的没想出来,discussion也都是递归,先扔着吧。
- 3/3一开始没递归思路。看了一下以后bugfree一次过。之后多看看~!
-
Combination Sum II
- 和39差不多,注意如何去重。
- 最好重新写一次。
- 3/3一次过。
-
First Missing Positive
- 只记得大概的思路,不过还是写出来了。
- 推荐重写。
- 3/3重写没能一遍过,四处的小bug。打死自己
-
Trapping Rain Water
- 虽然是hard,但是过了。耶。
-
Multiply Strings
- 也过啦,不难。还纠正了以前的错误做法。
- 我真棒!(发出王老舞的声音(×
- 如果左右两方都会向中间主动靠近,那么while可以写 st <= ed
- 如果有一方不会主动靠近,另一方会:
-
- 如果取mid的时候靠近主动的那边,那么while可以写 st < ed
- 如果取mid的时候靠近不主动的那边,那就只能写st < ed - 1
- 如果双方都不会主动靠近,那么甚至就需要写 st < ed - 1
-
Jump Game II
- 思路是对的,很多细节没弄清楚。
- 重写!
-
Permutations
- 简单
-
Permutations II
- 简单。去重方法,写过很多次了。
-
Rotate Image
- 简单
-
Group Anagrams
- 简单。一开始不知为啥用了set??
- 直接
"".join(sorted(word))
就可以进行分类了。
-
Pow(x, n)
- 简单。
-
Maximum Subarray
- O(n) slide一遍就可以,简单。
- divide and conquer 的复杂度明明是O(nlogn)???写法还复杂,还超时了, 给的都是啥tips啊摔。
- 不过divide and conquer复习熟悉一下也好。
-
Spiral Matrix
- 不难,但是麻烦。
- 不想写,先跳过了。
-
Jump Game
- 和45类似, 写出来了!
-
Merge Intervals
-
用的之前的方法,不太熟练,没有bug-free,建议重写。
-
discussion里面有相同的方法,很多行代码都可以简化的,注意一下。
-
关于如何用自定义的方法来对list排序sort:
-
def takeStart(elem):
return elem.start
intervals.sort(key=takeStart)
-
Meeting Rooms II
- 和56类似,简单。
-
Non-overlapping Intervals
- 和56类似但不太一样,推荐重写。
-
Insert Interval
- 简单
-
Permutation Sequence
- 写出来了,但建议重写一下。
-
Rotate List
- 简单模式!
-
Unique Paths
-
简单模式。
-
用Cmn和DP都能做。Cmn可能有些简单到犯规。
-
要注意的点是,Cmn关注的是走动的次数而不是格子的边长,所以要m-1,n-1。而DP关注的是边长,所以只需要m和n。
-
Cmn的公式是
def Cmn(m,n): return factor(m) / (factor(m-n) * factor(n))
-
-
Unique Paths II
- 不难。这个用Cmn就不好写了,所以用了DP。
- 这次i==0/j==0的时候不能直接置1,而同样需要判断
-
Minimum Path Sum
- 不难
-
Plus One
- 简单。
-
Add Binary
- 简单
-
Sqrt(x)
- 不难!同样二分查找即可!
-
Climbing Stairs
- 简单。
-
Simplify Path
- 简单
-
Edit Distance
- 牛逼,机智,重写!
-
Set Matrix Zeroes
- 看了之前的code才有思路的。推荐重写。
-
Search a 2D Matrix
- 第一次错了。第二次重写,也没能bug-free
- 重写。挺复杂的,很多坑。
-
Sort Colors
- 不难,但有个坑没逃过,建议重写。
-
Minimum Window Substring
- 是一个hard系列的,掌握模板好好写。
- 3/3非常认真看了算法以后一遍过了。建议过两天重写加深印象。
-
Minimum Window Substring
- 写了这题的衍生maxWindow_NoRepeatChar,一遍过,耶!
-
Combinations
- 有一些小bug,重写一下。
- java写了两节课才
-
Subsets
- 逻辑不对,重写。
- 3/7用java写完了,过了终于。java还是不太熟emm。
-
Word Search
- 一个小时,没搞出来,先跳过了。
- 想看table的最后一个维度是不能这样写的!!
table [ : ] [ : ] [idx]
。这样写的idx是作用在第一个维度上的!摔!
-
Remove Duplicates from Sorted Array II
- 有个坑和之前的排列00011112222很相似。要注意一下。
- 3/7重写。妈的discussion里面的一个方法简直了,是人吗???重写重写!!!
- java遍历数组的方法可以是
for (int n : nums)
其中nums是int[]
-
Search in Rotated Sorted Array II
- 很经典的题,有空可以重写。
- python跑出来没过但是我以为我过了,ed初始化的时候要注意是
len(nums)-1
- 3/7重写,第五次终于过了,重写重写重写我靠!ed和st移动的时候怎么移好好考虑好吗傻子!
-
Remove Duplicates from Sorted List II
- 不用重写。同理三个指针依此往后移。
if second.val == third.val or second.val == pre:
-
Remove Duplicates from Sorted List
- 82的easy模式,一次过。
-
Largest Rectangle in Histogram
- 太难了太难了太难了。酌情重写吧。
- 除了O(n)以外的时间复杂度,都超时了。
-
Partition List
- 简单一次过
-
Gray Code
-
找到规律就很简单
-
注意
tmp = [1,2,3] tmp.append([4,5]) # [1,2,3,[4,5]] tmp += [4,5] # [1,2,3,4,5]
-
-
Subsets II
-
自己写的那个有点慢,__ contains __复杂度有点高所以最好不要用
-
有很好的递归方法,看懂之后重写。
-
🔆java如何sort int[] nums:
Arrays.sort(nums);
-
java还没写出来
-
-
Decode Ways
- 动态规划,一次过。
-
Reverse Linked List II
- 链表,一次过。
-
Binary Tree Inorder Traversal
- 树的遍历。前序+后序+中序+层次,递归和迭代,都要能写!
- 3/8 java过了
-
Unique Binary Search Trees II
-
自己写出来的。不过推荐重写一下。
-
3/8 写了个java 有点艰难 不过还是写出来了
-
-
Unique Binary Search Trees
- 和95差不多,不过只需要返回个数就行了。如果直接改95的代码会超时。
- 可以用一个list保存当前n个节点的树可能的个数,这样就不用重复计算了。
-
Interleaving String
- 有了DP的思路之后就不难做了。
- 开始逐渐用java和python一起写。
- 冒号分号分不清楚,要习惯!
- 关于java里面的length()和length
// length can be used for int[], double[], String[]
// to know the length of the arrays.
// length() can be used for String, StringBuilder, etc
// String class related Objects to know the length of the String
- Validate Binary Search Tree
- 中序遍历可以做,但是比较慢👈一次过
- discussion的递归比较好用👈重写(python & java)
- 3/8重写一次过。注意这里要用Long.MAX_VALUE
// java 里面的最大最小值
Long.MIN_VALUE,Long.MAX_VALUE
Integer.MIN_VALUE, Integer.MAX_VALUE
- Recover Binary Search Tree
- 太难了,discussion有很好的方法。
- 想清楚,重写。
- 3/8 果然是hard模式emm。看了思路才一遍过。重写重写。
# python里面的最大最小值可以这么写
self.preNode = TreeNode(float('-inf'))
# swap是引用指针,所以要修改val才有效,不然就只改了指向
swap[0].val, swap[1].val = swap[1].val, swap[0].val
-
Same Tree
- 一遍过
-
Symmetric Tree
- 递归和stack都能做,一遍过。
-
Binary Tree Level Order Traversal
- 简单一遍过
-
Binary Tree Zigzag Level Order Traversal
- 简单模式 一遍过
-
Maximum Depth of Binary Tree
-
递归只用一行哈哈哈哈哈哈一次过。不过在公司这么写会被打吧哈哈哈哈哈哈。
-
return max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1 if root else 0
-
3/8写了个java一行操作,注意java的max需要用Math.max(int a, int b)。然后a和b需要是同类型。
-
return root==null ? 0:1+Math.max(maxDepth(root.left),maxDepth(root.right));
-
-
Construct Binary Tree from Preorder and Inorder Traversal
- 递归 一遍过(python
- java的递归写了一百遍,重写。
- 3/8 java的递归再次写了一百遍。我靠st和ed好好算会死吗???
-
Construct Binary Tree from Inorder and Postorder Traversal
- 和105一毛一样的思路
- java写了一遍,稳。
-
Binary Tree Level Order Traversal II
-
思路继续一样。然后从后面往前数,append或者+= 的时候有几种写法都可以,注意一下。
res[len(res)-idx].append(node.val) res[len(res)-idx] += [node.val] res[-idx] += [node.val]
- string是没法用append/insert的,只能用加号。
- list是可以用append/insert的,同时加号也能用,但是注意加号左右都应该是list。
tmp = '123' tmp.append('456') # ❌ tmp.insert('456') # ❌ tmp += '456' # ✅ tmp2 = range(10) tmp2.append(11) # ✅ tmp2 += [11] # ✅ tmp2 += 11 # ❌
-
-
Convert Sorted Array to Binary Search Tree
- 一次过。
-
Convert Sorted List to Binary Search Tree
-
对于链表没法直接得到最中间的元素。那么用fast和slow方法就非常有效了!discussion太机智了!
-
重写重写,搞了半天,反思。
-
3/8重写,几乎一遍过。一些小细节。
-
-
Balanced Binary Tree
-
第一次没想出来。重写。想清楚helper实现的功能是什么?
-
3/8 一次过。
-
-
Minimum Depth of Binary Tree
- 重写。min-depth的定义好好看看??
- 3/8 java重写完。几乎一次过。
-
Path Sum
-
差点一次过。题目判断空树的和没法为0.
-
if的数量最少3个就够了。
-
java比python不知道快到哪里去了。
-
3/8 一次过
-
-
Path Sum II
- 一遍过 不难
-
Flatten Binary Tree to Linked List
-
一遍过,用了两个stack,一个用来preorder遍历,一个用来存node。
-
然后遍历第二个,构造类似linked list的结构即可。
-
discussion里面有间接版本的,但是我没看懂,嗯。
-
-
Distinct Subsequences
- 想法是对的,用DP。如何构造table的时候要想清楚各自的含义!
- 重写!
- 3/8 java一次过!
-
Populating Next Right Pointers in Each Node
-
自己写的,层次遍历之后算出每层的个数然后指过去(因为是完全二叉树)。空间复杂度O(n)了。
-
discussion里面有超简单的方法!重写!
-
3/8 一次过
-
-
Populating Next Right Pointers in Each Node II
-
没看懂discussion
-
想一下以后写。
-
把之前标记要重写的题重写了。继续往下啦!
-
Pascal's Triangle
-
java一遍过。
-
List<List<Integer>> res 获取某个元素的方法是 res.get(0).get(0)
-
-
Triangle
-
曾经想出来过,不过也不难。可以重写。
-
java里面 整数类型(byte、short、int、long)的基本类型变量的默认值为0
-
3/20 一遍过,但是第一遍没有用最简单的方法,第二遍才。
-
-
Best Time to Buy and Sell Stock
- 没思路,有了就很简单。重写。
- 遍历一次就好了。
- 3/20 一次过
-
Best Time to Buy and Sell Stock II
-
五行就行,重写一下。
-
3/20 一遍过
-
-
Binary Tree Maximum Path Sum
- 有点tricky,重写。
-
Valid Palindrome
- 我靠java对char的操作太tm麻烦了
- 当然可以先对s进行变换之后再在char的单位上来比较,会简短一点。
- 3/20 几乎一次过 忽略了数字也应该要比较这件事儿
Character.isLetter(ch) //判断是不是字母
Character.isLetterOrDigit(s.charAt(ed)) //判断是不是数字或者字母
Character.toLowerCase(s.charAt(st)) //大小写转换
//然后因为char是一个primitive而不是object,所以他没有任何的属性,所以不能用ch.isLetter(),只能用Character.isLetter(ch)
-
Longest Consecutive Sequence
-
看了思路之后python一遍过,重写。
-
3/20 重写一遍过
-
-
Sum Root to Leaf Numbers
- java一遍过。
-
Surrounded Regions
-
先跳过,感冒了脑子不转了,之后做。
-
3/20依然不想做 什么傻子题目...
-
-
Palindrome Partitioning
-
java操作string不够熟练,两次过,重写。
java的s.substring(1)相当于python的s[1:]。
java的s.substring(0,1)相当于python的s[0:1]。
如果s的长度是len,那么s.substring(len)是合法的。
3/20 重写 一次过。
-
-
Palindrome Partitioning II
- DP即可,有坑注意。3/20几乎一次过。
-
Clone Graph
- 图论里面经典的算法,要掌握的。
- 3/20没能一次过 我的锅
-
Gas Station
-
java几乎一遍过。但是很慢。
-
discussion里面是什么神仙方法啊 看不太懂但是直觉告诉我是可以的
-
3/20 一次过
-
-
Candy
- 我记得当时也是有非常tricky的方法,想不起来了。
-
Single Number
-
java 异或 一遍过
-
java用map的基本语法还不太熟,多看看。重写。
-
3/20一遍过
-
-
Single Number II
- 一遍过
- 3/20 ↑什么一遍过,效率极低的一遍过orz。discussion里面有正统的写法,暂时没懂。要再看看。
-
Copy List with Random Pointer
- 竟然java一次过了我简直!!
- 3/20 递归和迭代都行了,迭代会麻烦一点。
-
Word Break
- 看了discussion里面动态规划的方法,重写重写。
- 但是复杂度是O(n^2),击败了48%感觉有点慢?
-
Linked List Cycle
- 一次过。fast和slow果然非常好用啊!
-
Linked List Cycle II
- 看了原理之后一次过。看过之后会证明了,但是第一次没想出来。
- 3/21 一次过
-
Reorder List
- 比较麻烦,不过一次过啦开心!
以上都是之前做过的题,这样就算过过两遍了!
以后是新的题目,第一次做!
[✅] 144. Binary Tree Preorder Traversal
- 树的遍历,简单一次过
[✅] 145. Binary Tree Postorder Traversal
- 树的后序遍历,一次过。
[⭐]147. Insertion Sort List
- 自己写出来的,但是初次逻辑不太对。
- 需要挺多变量的,弄清楚。
- 3/20一次过 没啥问题...
[✅] 148. Sort List
- 不难,小麻烦,熟练了就行。
- 3/20 重写一次过。
[❌]149. Max Points on a Line
- 奇怪的题目,先跳过。
[⭐] 150. Evaluate Reverse Polish Notation
- 思路是对的,但是没能一次过,重写。
- java的String没法直接比较是不是数字,除非转成char一个一个比,或者用正则表达。
- java里面String的比较,应该用s1.equals(s2)。== compares object references in Java, and that is no exception for String objects. For comparing the actual contents of objects (including String ), one must use the equals method.
- 如何把string转num:
Integer.parseInt(c)
- 3/20重写,还挺好写的啊明明。注意使用stack还是queue就行了(显然是stack的。
[⭐] 151. Reverse Words in a String
- 自己写的,但是没能bug-free。
- 3/20 依然没能bugfree 不过换用了stringbuilder的方法
[⭐] 152. Maximum Product Subarray
- 看了discussion,DP非常好用!
- 3/21 一次过
[✅]153. Find Minimum in Rotated Sorted Array
- 没啥难度,一次过。
[⭐] 154. Find Minimum in Rotated Sorted Array II
- 移动时候的条件判断要注意,写了很多次才通过的。重写。
- 3/21 重写。bugfree失败。重写
- [2,2,2,2,0,1,2] 和 [2,0,1,2,2,2,2,2]
[⭐] 160. Intersection of Two Linked Lists
- 自己写的一次过但是慢,空间复杂度还是O(n)。discussion的方法无敌好了。
- 3/20 还记得做法 一次过 耶
[⭐] 162. Find Peak Element
- 自己写的O(n),discussion里面的O(logn)
- 3/21 重写,还是没想出来。傻子。
[❌]164. Maximum Gap
- 太难了 跳过先
[✅] 165. Compare Version Numbers
- 题没啥难度。注意java的s.split("//.")里面跟的是正则表达,服了。
- 3/22 差不多一次过。注意1.1.0和1.1被认为是一样的。
[✅] 167. Two Sum II - Input array is sorted
- 简单一次过。
[⭐] 168. Excel Sheet Column Title
- 对26取余的时候如何保证得到[0,25]之间的值?
- StringBuilder这么好用为什么不学??同文件夹下有个java_3150103638_hw1的pdf,里面是当时java的作业,分析了String+StringBuilder+StringBuffer的区别。
- 3/22重写 还是不太明白 不够intuitive
The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the
StringBuilder
(orStringBuffer
) class and itsappend
method. String conversions are implemented through the methodtoString
, defined byObject
and inherited by all classes in Java.
[⭐] 169. Majority Element
-
思路简单,为了熟悉map操作可以重写。
-
3/22 用类似抵消原理重写了 有一个小地方失误 然后一遍过
-
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); if(map.get(i)!=null) map.replace(i,map.get(i)+1); else map.put(i,1); ... for(int i : map.keySet()) ...
[✅] 171. Excel Sheet Column Number
[✅] 172. Factorial Trailing Zeroes
怎么回事中间有一堆SQL的题目...跳过了先。
[❌]188. Best Time to Buy and Sell Stock IV
- 想不出,没太想,先跳过。
[✅] 189. Rotate Array
- 自己也能写,但是时空复杂度没法同时达到最优。有了想法就很简单了。
- 3/22 一次过!
[⭐]190. Reverse Bits
- 3/22 一次过!
[✅] 191. Number of 1 Bits
192~197都是bash或者SQL的,跳过。
[✅] 198. House Robber
[⭐] 199. Binary Tree Right Side View
- 3/22 偷瞟了上次的过程才写出来的dbp.再重写吧
[⭐] 200. Number of Islands
[⭐] 201. Bitwise AND of Numbers Range
- 重写重写,想清楚先。
- 3/28 一次过
[✅] 202. Happy Number
[✅] 203. Remove Linked List Elements
[⭐] 204. Count Primes
- 3/28 偷瞟了一眼之前的答案之后过了(fine
[⭐] 205. Isomorphic Strings
- 3/28 一次过!
[✅] 206. Reverse Linked List
-
新建一个空int[]的方法包括:
res = new int[]{}; res = new int[0];
[⭐] 207. Course Schedule
-
要好好写。graph的基本知识,重写重写。
-
3/20 基本的数据结构一开始有点懵逼要怎么写
ArrayList[] graph = new ArrayList[numCourses];
真是奇妙的存在。偷瞄了数据结构之后就会写了!
[❌]208. Implement Trie (Prefix Tree)
- 没搞懂,啥玩意儿。感冒没心思看,跳过了先。
[✅] 209. Minimum Size Subarray Sum
- 是之前做过的 max substring类型的题目
- 3/28 小的边界条件要多注意下
[✅] 210. Course Schedule II
[⭐] 213. House Robber II
- 3/29写还行?java的切片不熟就直接传入st和ed好吧。
[⭐] 214. Shortest Palindrome
- 自己写的但是bug挺多,重写
- 3/29 自己重写 还是没能一次过emm
- string是没有reverse方法的,需要根据string构造stringbuilder然后reverse然后转回string
- 在UCB群里看到的KMP算法用于匹配字符串
[⭐] 215. Kth Largest Element in an Array
-
基本数据结构!算复杂度!好好想!java的priorityqueue。
-
3/29 一次过
[✅] 216. Combination Sum III
[✅] 217. Contains Duplicate
java如何sort int[] : Arrays.sort(nums);
[❌] 218. The Skyline Problem
- hard题先跳过了
[✅] 219. Contains Duplicate II
[⭐] 220. Contains Duplicate III
- 太机智了我靠
- 3/29 到处踩坑我靠,重写重写重写。要用long。map映射的应该是什么??k和t的含义分清。remove的时机。
[⭐] 221. Maximal Square
- DP 原创太难了
- 3/29 一次过
[✅] 222. Count Complete Tree Nodes
层次遍历的时候要用的堆可以直接Queue<TreeNode> queue = new LinkedList<>();
其中包括的操作有
queue.peek()//返回第一个元素
queue.poll()//返回第一个元素并删除
queue.offer(2)//放入新的元素
具体请戳文档!
[⭐] 222. Count Complete Tree Nodes
- 自己写的太慢(O(n)),重写(O((log(n))^2))。
- 3/22 一次过!
[⭐] 223. Rectangle Area
- 自己写的太慢,其实可以公式直接算。
- 3/22 记得公式了,没写。五行的事儿写啥啊。
[❌] 224. Basic Calculator
[⭐] 225. Implement Stack using Queues
-
写出来的,再次熟悉一下queue的用法。
-
3/29 不难一次过,还只用一个queue,节约了空间
-
queue = new LinkedList<Integer>(); queue.offer(x); res = queue.poll(); while(!queue2.isEmpty()) while(queue.size()>1)
[✅] 226. Invert Binary Tree
- 递归迭代要都能写。
[✅] 228. Summary Ranges
[⭐] 229. Majority Element II
- 摩尔投票法了解一下
- 3/29 没一次过 想清楚啊啊啊
[⭐] 231. Power of Two
- 普通做法✅,机智做法⭐
- 3/29 普通和机智做法都一次过啦√
[✅] 232. Implement Queue using Stacks
-
stack的基本操作(peek pop push)了解一下,和225几乎一样。
-
3/29 一次过
-
Stack<Integer> stack2 = new Stack<>(); while(!stack.isEmpty()) stack2.push(stack.pop()); int res = (int)stack2.pop(); int res = (int)stack2.peek();
[❌] 233. Number of Digit One
- hard不想做 跳过
[⭐] 234. Palindrome Linked List
- 应该可以bugfree的题目,注意reverse的时候一开始的指针要置null啊多少次了!!
- 3/30 指针没问题了,空链表的情况注意
[✅] 235. Lowest Common Ancestor of a Binary Search Tree
[✅] 237. Delete Node in a Linked List
- 啥子题目哟
[⭐] 238. Product of Array Except Self
- 要多考虑考虑嗷
- 3/30 用了division的方法一次过,note里面不用division的方法,看了discussion以想通了也一次过。
[⭐] 239. Sliding Window Maximum
- 超机智的做法!!重写!!
- 行吧3/31 自己想了半天还是没太想通,看代码才勉强弄懂。晚上写一下。
[✅] 240. Search a 2D Matrix II
[⭐] 241. Different Ways to Add Parentheses
- 3/31 看了一下之前的tips之后写出来的 还是没记住唔quq
[✅] 华为模拟笔试题 SwapWithZero
- 一个长度为len的数组,里面存的是乱序的[0, len-1]。要求sort,但是只能调用函数SwapWithZero,功能是交换数字n和数字0的位置。
- 想了一会儿,一次过。
[✅] 242. Valid Anagram
- 如何把int变成string:
Integer.toString(root.val)
[✅] 257. Binary Tree Paths
- 如何把int变成string:
Integer.toString(root.val)
- 如何把string变成int:
Integer.parseInt("2333")
[✅] 258. Add Digits
[⭐] 263. Ugly Number
- 不难,注意边缘条件(1和0)即可。
- 3/31 轻松一次过!
[⭐] 264. Ugly Number II
- discussion里面的机智方法,好吧~
- 3/31 如何防止重复没想出来,重写重写。
[✅] 268. Missing Number
[⭐] 274. H-Index
- 还没看和整理
[⭐] kickstart_super_2048
- 自己写的,但是写了太久了...
[⭐]278. First Bad Version
-
放个星星买教训orz 佛了
-
int mid = st+(ed-st)/2; //这个正常 int mid = (st+ed)/2; //这个如果是两个大数的话会越界
- small过了,large没过
[❌] Round A. Parcels
- small过了,large没过
- small没过,large更没过
- 你菜死算了
- 检查了复杂度O(N)的方法,想得到的话也不太难emm
[✅] 279. Perfect Squares
[⭐] 284. Peeking Iterator
[✅] 283. Move Zeroes
[⭐] 287. Find the Duplicate Number
-
自己想了挺久才写出来的。但是没有满足不修改nums的要求。
-
discussion里面的方法简直牛逼。重写!
[✅] 289. Game of Life
- 挺straight的方法,不难。
- 如何用已有数据初始化数组
int[][] dir ={{1,-1},{1,0},{1,1},{0,-1},{0,1},{-1,-1},{-1,0},{-1,1}};
[⭐] 290. Word Pattern
- 老样子万用的map,两次过。条件判断的时候稍微注意下顺序就行。
[✅] 292. Nim Game
[✅] 295. Find Median from Data Stream
- 想不通为啥这是hard,每次二分查找后插入不就好了。
- list在指定的下标插入数据用list.add(idx,num);
[⭐] 297. Serialize and Deserialize Binary Tree
-
写的用null填满list的方法超时了emm,重写!!
-
如何把int[] 变成ArrayList:
-
Deque<String> nodes = new LinkedList<>(); nodes.addAll(Arrays.asList(data.split(spliter)));
[✅] 299. Bulls and Cows
[⭐] 300. Longest Increasing Subsequence
- 自己写的是DP,复杂度是n平方。
- discussion里面是nlogn,这个可以重写。
- 4/20 没想出来 看了之前的过程才写出来哭
[❌] 301. Remove Invalid Parentheses
- 想不出来,还没看答案
[✅] 303. Range Sum Query - Immutable
[✅] 304. Range Sum Query 2D - Immutable
[⭐] 306. Additive Number
- 自己写的,挺有趣的一道题,坑比较多,注意一下。重写。
[⭐] 309. Best Time to Buy and Sell Stock with Cooldown
- 太难了又太机智了,想想清楚!重写!
[⭐] 310. Minimum Height Trees
-
图的遍历,自己写的超时了orz,但是思路是对的。不超时的方法要重写!
-
// 关于map如何遍历value和key: for(int root : map.keySet()) for(int dist : map.values()) // 关于如何复制int[] int[] tmp = res.clone();
[❌] 312. Burst Balloons
[✅] 313. Super Ugly Number
[⭐] 315. Count of Smaller Numbers After Self
- 我几乎和这道题磕了一天,死。
[❌] 316. Remove Duplicate Letters
- 贪心算法行不通,哭。要再想想。
[✅] 319. Bulb Switcher
[⭐] 318. Maximum Product of Word Lengths
- 思路一样,数据存储方式的差别会导致速度50%和90的差别%。
- (我写的当然是50%了(理直气壮
- 所以重写。
[⭐] 321. Create Maximum Number
- 昨天只写出来了数字不重复的版本,重复的测试没过,要再想想。
- 今天看了discussion终于弄出来了,不容易啊quq。
[⭐] 322. Coin Change
- 没想出来,重写。
[❌] 324. Wiggle Sort II
- 理解了应该不难,还没看解释。
[⭐] 326. Power of Three
- 这么简单还没能一遍过,菜
- 用不用循环两种方法都写下
[⭐] 327. Count of Range Sum
- 暂时还是只有O(n^2)的方法,行吧
[✅] 328. Odd Even Linked List
- 简单模式
[⭐] 329. Longest Increasing Path in a Matrix
-
DP!!写!!
-
// 如何初始化final高维数组 private static final int[][] dirs = {{0,1},{0,-1},{1,0},{-1,0}};
[⭐] 330. Patching Array
- 自己写了个但是超时了嗯
- 后来认真寻思了一下题目!!!写出来了!!!!我牛逼!!
[✅] 331. Verify Preorder Serialization of a Binary Tree
- 自己写出来的耶!一些边界情况注意一下,别的就没啦!
[⭐] 332. Reconstruct Itinerary
- 拓扑遍历图的方法,完全忘了,重写。
[⭐] 334. Increasing Triplet Subsequence
- 非常机智的方法!本来应该想得出来的!重写!等号的边界条件要注意。
[⭐] 336. Palindrome Pairs
- 太难了这题我真的,看discussion的算法和trie tree的结构看了半天。
- trie tree了解一下大概就行了quq。
[✅] 337. House Robber III
- 递归过了,但是比较慢,有很多重复计算。
- 如何避免重复计算。
[✅] 338. Counting Bits
- 自己想的,两遍过。边界条件注意下。
[✅] 342. Power of Four
[✅] 343. Integer Break
[✅] 344. Reverse String
[⭐] 345. Reverse Vowels of a String
- 思路是对的一遍过, 不过用stringbuilder不如用char[]。
- 关于String的valueOf函数用法戳这里。
//如何初始化set
String[] SET_VALUES = new String[] { "a", "b" }
Set<String> MY_SET = new HashSet<String>(Arrays.asList(SET_VALUES));
// string 2 char[]
String s = "hello";
char[] list=s.toCharArray();
// char[] 2 string
return String.valueOf(list);
[✅⭐] 347. Top K Frequent Elements
-
hashmap是put,hashset是add,arraylist是add
-
如何自定义comparator来写priorityqueue!!!
-
java也有map default的写法:
-
map.put(nums[i],map.getOrDefault(nums[i],0)+1);
[✅] 349. Intersection of Two Arrays
-
算法待改进
-
复杂度O(n)还改进啥啊,题目太菜了。
[✅] 350. Intersection of Two Arrays II
[⭐] 354. Russian Doll Envelopes
- 太难了真的,完全想不到...
[✅] 357. Count Numbers with Unique Digits
- 数学题。
[⭐] 363. Max Sum of Rectangle No Larger Than K
- 傻子暴力搜索算法
[⭐] 365. Water and Jug Problem
- 一道数论的数学题,fine。
//寻找最大公因数的辗转相除法
private int GCD(int x, int y)
{
while(y!=0)
{
int tmp = y;
y = x % y;
x = tmp;
}
return x;
}
[✅] 367. Valid Perfect Square
- 简单题,有三种做法,可以想想
[⭐] 368. Largest Divisible Subset
- 难题,还tricky,多想想。
[⭐] 372. Super Pow
- 指数可以super super大噢,好好想下。
[✅] 374. Guess Number Higher or Lower
[⭐] 376. Wiggle Subsequence
- O(n^2)不难,O(n)的方法想通了也不难
[⭐] 375. Guess Number Higher or Lower II
- dp大法好
[✅] 377. Combination Sum IV
[⭐] 378. Kth Smallest Element in a Sorted Matrix
- 还是PriorityQueue Comparator写的不熟。
[✅] 382. Linked List Random Node
[✅] 382. Linked List Random Node
[❌] 336. Palindrome Pairs
[⭐] 378. Kth Smallest Element in a Sorted Matrix
第二波刷题在找到五月实习入职前中止,实习实在太太太太太忙了暂时不刷了。
下次刷题时间段在暑假离职之后到找到全职之前,大概八月份开始,不知道啥时候结束。
机灵 2019.5.24
我回来了!
2019.7.27
[✅] 1. 两数之和
根据map的提示,思路顺,一次过。
[✅] 2. 两数相加
思路顺,一次过。
[⭐] 3. 无重复字符的最长子串
更新max_len的位置欠考虑,三次过。
[⭐] 4. 寻找两个有序数组的中位数
O(n+m)的两次过,边界条件第一次没考虑好。
O(lg(n+m))也两次过,同边界条件。
[✅] 5. 最长回文子串
一次过。
[⭐] 6. Z 字形变换
一开始在纸上写了下,想着用queue可行,但坑太多了。三次没过。
后来还是生成numRows个字符串然后拼接起来更快。两次过。
拼接: ''.join(res)
[✅] 7. 整数反转
思路对,一次过。
奇怪的题目,因为下标越界的错,两次过。
[✅] 9. 回文数
思路对,一行的写法是 return str(x) == str(x)[::-1]
。
不然就reverse int之后比较数字,特殊情况是<0, [0, 9], x % 10 == 0的时候。
python int→string是str(134)
[✅] 11. 盛最多水的容器
方法思路对,一次过。
证明方法没想出来。
[✅] 14. 最长公共前缀
方法思路对,一次过。
[⭐] 15. 三数之和
第一次把TwoSum作为函数,写的有点乱,改了几次才过。当有一串重复数字的时候,前面的直接加入map不判断,只判断最后一位即可。倒过来就不行。要构造n次map所以一定很慢了... 用三个指针就能解决,注意重复问题就可。
[✅] 17. 电话号码的字母组合
递归遍历即可,思路对,两次过。
迭代也不难。
[✅] 18. 四数之和
借ThreeSum,思路对,两次过。
[✅] 19. 删除链表的倒数第N个节点
输入head是第一个node,习惯性自建一个dummy指向head,不要搞混就好。
思路对一次过。
[⭐] 20. 有效的括号
思路是对的但是小问题有点多。
python的False首字母大写。
[]可以实现堆栈先进后出的append()和pop()功能
要用先进先出的queue的话,需要
from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")
queue.popleft()
[✅] 21. 合并两个有序链表
轻松!
[⭐] 22. 括号生成
迭代有点小难,改了几次才过。
我猜我之前是递归做的,明天看下!
我回来了。递归不会写,重写!
[⭐] 23. 合并K个排序链表
不看效率的话是easy题,遍历合并即可,复杂度是node总数*list个数。
要提升效率的话,每次做两两合并,复杂度是list长度*log(list个数)。👈终止条件要考虑下,第一次错了。
[✅] 24. 两两交换链表中的节点
没有难度,注意指针后移的时候需要按照交换后的顺序即可。
[✅] 25. K 个一组翻转链表
思路对,一次过。
[✅] 26. 删除排序数组中的重复项
思路对,一次过。
[✅] 27. 移除元素
不太懂26和27的意义和难点在哪儿...
[✅] 28. 实现strStr()
我还是不懂难点在哪儿...
[✅] 29. 两数相除
思路对,一次过
[⭐] 31. 下一个排列
这题挺好的,很多坑。怎么选取要交换的下标,怎么替换。
[⭐] 32. 最长有效括号
猜到了会出怎样的用例来测超时(但还是超时了,fine
写了最原始的暴力搜索,和带一些DP的暴力搜索,但都超时了。
看了看记录之前也是看答案的,答案的解法真的amazing!
[⭐] 33. Search in Rotated Sorted Array
在公司刷题还是有点虚,全是错,这里错那里错,回去重写。
[✅] 34. Find First and Last Position of Element in Sorted Array
没难度,两次过。注意下二分查找的边际条件即可。
[✅] 35. Search Insert Position
easy题,一次过。
[✅] 38. Count and Say
easy题,一次过。
[⭐] 39. Combination Sum
递归,自己没写出来。同一个元素可以用多次的情况下, 如何避免重复?
[✅] 40. Combination Sum II
39能写40就能写。
[✅] 41. First Missing Positive
我记得之前的方法,就很绝,感觉无法超越。
[✅] 42. Trapping Rain Water
hard,思路对一次过。
[✅] 43. Multiply Strings
思路对,逐位乘,一次过。
[⭐❌] 44. Wildcard Matching
想了一个DP的解法,但是超时了。
解法在这里,今天不想动脑子,明天看。
[✅] 45. Jump Game II
可以,hard题一次过,我要飘了。
[⭐] 46. Permutations
想了一会儿递归的方法,然后过的。和39一毛一样。
[✅] 47. Permutations II
同46
[✅] 48. Rotate Image
[✅] 49. Group Anagrams
字符串按照字母顺序重新排序的方法是 "".join(sorted(str))
[✅] 50. Pow(x, n)
思路对一次过。节约时间的方法。
[❌] 51. N-Queens
[✅] 53. Maximum Subarray
思路对一次过。注意需要选择至少一个元素。
[✅] 54. Spiral Matrix
思路对一次过!状态机,好用!
[✅] 56. Merge Intervals
方法不难。自定义python排序的方法写法:
def getStart(interval):
return interval[0]
intervals.sort(key = getStart)
[⭐] 58. Length of Last Word
有个问题是,string结尾有空格的情况下,split的最后一项会有一个长度为零、打印不出的符号(换行符)
需要用一下strip()处理。
[✅] 59. Spiral Matrix II
和54一样的题,思路对一次过。
[⭐] 60. Permutation Sequence
思路对,但是有点绕,不过写出来的。
看了一眼之前的解法,可以不用map实现,每一位逐步计算就可。
[✅] 61. Rotate List
简单。
[✅] 62. Unique Paths
用cmn函数就能实现,没有难度...
DP也可,但有公式可以直接算就没必要浪费空间了。
[✅] 63. Unique Paths II
用DP,没难度。
[✅] 64. Minimum Path Sum
没难度++
[✅] 66. Plus One
简单题,没难度。用了两种方法。
[✅] 69. Sqrt(x)
简单题,考虑好边界条件,一次过。
[✅] 70. Climbing Stairs
DP,甚至不用建表,因为只依赖前两个状态。
[✅] 71. Simplify Path
done。
[✅] 72. Edit Distance
很绝的DP,导致我记到现在。一次过。
[✅] 73. Set Matrix Zeroes
Space O(m+n)的很好写。
Space O(1)的也能写,但有点取巧了。
不管,过了反正。
[✅] 74. Search a 2D Matrix
思路对,写的时候return -1 还是return True有点绕。别的问题不大。
两次过。
[⭐] 75. Sort Colors
两次过,出了个bug。想一想。
[⭐] 76. Minimum Window Substring
啊思路对但是没写出来。十点了下班了明天再说。
重写了两次才过。重写重写。
[✅] 77. Combinations
思路对,两次过。
[⭐] 78. Subsets
思路不对,两次过。这里使用了递归就不需要在外层遍历了。
[⭐] 79. Word Search
写出来了但是有点绕,并且超时了。
看了dis里面的递归,很绝,但也超时了。
[⭐] 80. Remove Duplicates from Sorted Array II
要考虑在原数组被改变的情况下怎么保持判断个数的正确性。两次过。
[⭐] 80. Remove Duplicates from Sorted Array II
[⭐] 81. Search in Rotated Sorted Array II
看看这提交记录是什么绝世没有长进的傻子。
不要锁死在二分查找上> <
Time Submitted | Status | Runtime | Memory | Language |
---|---|---|---|---|
a few seconds ago | Accepted | 40 ms | 12 MB | python |
2 minutes ago | Wrong Answer | N/A | N/A | python |
7 minutes ago | Wrong Answer | N/A | N/A | python |
12 minutes ago | Wrong Answer | N/A | N/A | python |
15 minutes ago | Wrong Answer | N/A | N/A | python |
16 minutes ago | Wrong Answer | N/A | N/A | python |
5 months ago | Accepted | 0 ms | 37.8 MB | java |
5 months ago | Wrong Answer | N/A | N/A | java |
5 months ago | Wrong Answer | N/A | N/A | java |
5 months ago | Wrong Answer | N/A | N/A | java |
5 months ago | Runtime Error | N/A | N/A | java |
5 months ago | Runtime Error | N/A | N/A | python |
[⭐] 82. Remove Duplicates from Sorted List II
思路对两次过,有点麻烦。最后注意指向None即可。
[✅] 83. Remove Duplicates from Sorted List
easy版本的83
[✅] 84. Largest Rectangle in Histogram
8.13
[✅] 86. Partition List
[✅] 88. Merge Sorted Array
两种方法,另外开数组和原地挪动都可,后者空间要求更小。反过来遍历即可。一次过。
[✅] 89. Gray Code
方法还挺微妙的,想的时候想起来了之前自己的做法,一次过。
[⭐] 90. Subsets II
没写出来!看了之前的过程!
8.17
[⭐] 91. 解码方法
自己写出来,但是卡bug了几次。需要考虑valid的两位数不能是0开头。以及可以优化DP的过程(空间复杂度减到O(1)
[✅] 92. 反转链表 II
木有难度
[✅] 94. 二叉树的中序遍历
[✅] 144. 二叉树的前序遍历
[✅] 145. 二叉树的后序遍历
树的遍历系列!
8.18
[⭐] 95. 不同的二叉搜索树 II
递归我可以,但是两次过。考虑一下空树要怎么写。
[⭐] 96. 不同的二叉搜索树
第一遍用了95里面的递归,返回类型改成了int,超时。
第二遍依然用的递归,只是开了一个表记录了之前计算过的值,超时。
第三遍放弃模拟树的生成过程,DP不好吗!?
[⭐] 97. 交错字符串
是我自己想出来的hard题呜呜呜感动。
写的比较久,[[]]来表示矩阵还是不够熟练,DP大法好。
[✅] 98. Validate Binary Search Tree
巧妙!
[✅] 100. Same Tree
[✅] 102. Binary Tree Level Order Traversal
[✅] 103. Binary Tree Zigzag Level Order Traversal
[✅] 104. Maximum Depth of Binary Tree
以上都是树的简单题,递归一次过。
[⭐] 105. Construct Binary Tree from Preorder and Inorder Traversal
递归不难两次过,注意一下判断的边界条件。
[✅] 106. Construct Binary Tree from Inorder and Postorder Traversal
和105一样的做法
[✅] 108. Convert Sorted Array to Binary Search Tree
递归一次过
[✅] 109. Convert Sorted List to Binary Search Tree
[✅] 111. Minimum Depth of Binary Tree
为什么今天的题都毫无难度。
[✅] 112. Path Sum
[⭐] 113. Path Sum II
有个递归时候变量生命周期的问题。
[✅] 114. Flatten Binary Tree to Linked List
[⭐] 115. Distinct Subsequences
DP好用,一开始想错了 table[h][l] = table[h-1][l-1] + table[h][l-1]
[✅] 116. Populating Next Right Pointers in Each Node
[⭐] 117. Populating Next Right Pointers in Each Node II
和116类似,另外维护一个stack即可。116两次过,117两次过
都一次过
[✅] 120. Triangle
[✅] 122. Best Time to Buy and Sell Stock II
[⭐] 128. Longest Consecutive Sequence
这个有点难,我想不到。
[✅] 129. Sum Root to Leaf Numbers
一题一题做进度有点慢,从之前打星的题开始了。
[⭐] 128. Longest Consecutive Sequence.md
转成set很机智的做法了...看了解析
[✅] 131. Palindrome Partitioning.md
[⭐] 132. Palindrome Partitioning II.md
DP做,超时了;dfs做,也超时了。
[⭐] 133. Clone Graph
重温了一下graph相关的遍历...
[✅] 136. Single Number
[❌] 135. Candy
[✅] 139. Word Break
[✅] 150. Evaluate Reverse Polish Notation
[✅] 151. Reverse Words in a String
[✅] 152. Maximum Product Subarray
真是毫无挑战呢。
[⭐] 154. Find Minimum in Rotated Sorted Array II
下一题就打脸哈哈哈哈哈哈哈哈哈哈哈。改了三次才过。
[✅] 160. Intersection of Two Linked Lists
我又可以了
我能写,但是要口述原理的话要想想
为什么二分查找大的那一半一定会有峰值呢?(即nums[mid]<nums[mid+1]时,mid+1~N一定存在峰值) 我的理解是,首先已知 nums[mid+1]>nums[mid],那么mid+2只有两种可能,一个是大于mid+1,一个是小于mid+1,小于mid+1的情况,那么mid+1就是峰值,大于mid+1的情况,继续向右推,如果一直到数组的末尾都是大于的,那么可以肯定最后一个元素是峰值,因为nums[nums.length]=负无穷
[⭐] 168. Excel Sheet Column Title
思路都对,就python做char的计算的时候需要(chr)(ord('A')+num)
碰撞法,好用
[⭐] 199. Binary Tree Right Side View
一开始思路不对,后来改正了。
看了之前的才写出来><
[✅] 201. Bitwise AND of Numbers Range
想了一会儿但还是写出来了w
啊啊我傻了,空间换时间之后完全用不到isPrime函数,重写重写
写了两次,对应关系没搞清楚。
graph又忘完了!好不好意思!??
[⭐] 220. Contains Duplicate III
太难了,bucket写一次忘一次
还是没自己想出来> <
[⭐] 222. Count Complete Tree Nodes
[✅] 225. Implement Stack using Queues
[⭐] 234. Palindrome Linked List
应该可以bugfree的题目,注意reverse的时候一开始的指针要置null啊多少次了!!
[✅] 238. Product of Array Except Self
普通方法过了,有个机智方法空间复杂度最低的,可重写下。
[⭐] 239. Sliding Window Maximum
太难了我看了半个小时,淦。
[✅] 241. Different Ways to Add Parentheses
[✅] 263. Ugly Number
思路对,看了小提示写出来的
[✅] 287. Find the Duplicate Number
基础方法一次过,用链表成环的方法可太机智了。
[✅] 297. Serialize and Deserialize Binary Tree
写了挺久,但一次过。
[✅] 300. Longest Increasing Subsequence
写了很久,很麻烦,但思路不难。
[⭐] 309. Best Time to Buy and Sell Stock with Cooldown
看了之前的做法没看懂,然后发现三月份的自己给现在的我写了一段话:
行吧我为discussion里面的神仙解法,以及一步一步继续简化变量和方法的算法折服,深深地折服。
我之后一定会看不懂代码的,戳这里重新看讲解吧。
佛了,我属于我自己!
懒,不想做。
[⭐] 315. Count of Smaller Numbers After Self
这题真的太难了...原理其实不太难,但很麻烦,踩坑无数。改天重新写下练习。
[⭐] 316. Remove Duplicate Letters
想了10min没思路,看了discussion,这方法绝了。
[✅] 318. Maximum Product of Word Lengths
[⭐] 322. Coin Change
递归和迭代两种做法,都没写出来,傻的吗。
[⭐] 327. Count of Range Sum
超时了,之后要看下nlogn的解法。
[✅] 329. Longest Increasing Path in a Matrix
自己写的DP内存爆了,discussion里面的方法真是绝了。
[⭐] 332. Reconstruct Itinerary
拓扑图遍历又忘了,我真是要完了。
[⭐] 334. Increasing Triplet Subsequence
如何做效率比较高的dfs。
[✅] 345. Reverse Vowels of a String
[⭐] 354. Russian Doll Envelopes
方法绝了。就算方法想不出,寻找最长递增子列总要会写吧orz傻子。
[⭐] 363. Max Sum of Rectangle No Larger Than K
[❌] 368. Largest Divisible Subset
太难了,不想动脑子,先跳过。
[⭐] 372. Super Pow
啊啊终于做出来了,论数学的重要性
[✅] 380. Insert Delete GetRandom O(1)
[✅] 382. Linked List Random Node
[⭐] 385. Mini Parser
啊这题用递归真是太机智了!佛了!
[⭐] 386. Lexicographical Numbers
看了discussion,绝了。
[✅] 387. First Unique Character in a String
[✅] 388. Longest Absolute File Path
两次过哈哈哈没难度。字符串匹配的时候注意下\t转义的问题。
为什么大佬总能想到位操作,或许这就是差距吗orz。
数学题!
不会做!
简单题,一次过
有点麻烦,不过还是几次过了,一开始没考虑到嵌套,后来用了递归就可了。
[✅] 395. Longest Substring with At Least K Repeating Characters
哈哈哈哈自己写的递归,过了,打败了90%。
自己写的O(n^2),用个的简单的公式就可以O(n)。
递归三行。
⭐位运算会快一些,有了思路就不难,考虑重写。
这个随机采样方法绝了,虽然看起来是很经典的算法,记一下。
[⭐] 400. Nth Digit
是简单题但两次才过。第一次欠考虑了位数*个数的问题。不难。
这题也太好笑了。空间换时间可,暴力搜索也可。
# 统计二进制数i中1的个数的写法:
bin(i).count('1')==n
# 一行解法
return ["%d:%02d"%(i,j) for j in range(60) for i in range(12) if bin(i).count('1')+bin(j).count('1')==num]
有小坑,题不难,两种方法均可,从删bit的思路和加bit的思路考虑都可。
[⭐] 403. Frog Jump
两种方法,递归和DP。
递归一次过。
[⭐] 405. Convert a Number to Hexadecimal
除法取余可以,但负数的处理需要考虑下。用移位更方便。
[⭐] 406. Queue Reconstruction by Height
有空重写下,关于排序的问题。
[❌] 407. Trapping Rain Water II
[✅] 409. Longest Palindrome
[⭐] 410. Split Array Largest Sum
递归会写,但超时了。
[✅] [Google]Local Max
[⭐] 161. One Edit Distance
思路没问题,考虑下abc和abc2的情况
[✅] 412. Fizz Buzz
目的何在 什么傻子题目
[✅] 1007. Minimum Domino Rotations For Equal Row
写的有点麻烦,但本身题不难
[✅] [Google]Water Flowers
不难,按流程来就行
[✅] 413. Arithmetic Slices
python预定义最小值的时候可以 float('-inf')
,int 不行,必须float
[⭐] 414. Third Maximum Number
[✅] 415. Add Strings
[⭐] 416. Partition Equal Subset Sum
递归可但超时,DP好用。
[✅] [Google]Software Version Generation
[⭐] 420. Strong Password Checker
现场我一定想不出,我看discussion都看半天才看懂
[❌] 421. Maximum XOR of Two Numbers in an Array
是真的看不懂,哭
[⭐] 424. Longest Repeating Character Replacement
自己写出来了,不过注意之前有很好用的模板,有一丢丢忘了。
[✅] 429. N-ary Tree Level Order Traversal
[✅] 430. Flatten a Multilevel Doubly Linked List
哈哈哈哈哈自己写出来的97%和100%。早上写的,出了个门回来再看有点看不懂,之后再熟悉下。
[⭐] 433. Minimum Genetic Mutation
做法和我思路是一致的,觉得麻烦一开始就没做下去。重写。
[✅] 434. Number of Segments in a String
[✅] 437. Path Sum III
[⭐] 438. Find All Anagrams in a String
自己写的,但挪之后判断和判断之后挪,会影响边际条件。
[❌] 440. K-th Smallest in Lexicographical Order
我尽力了...
[✅] 441. Arranging Coins
二分能提速很多。不难。
[✅] 442. Find All Duplicates in an Array
[✅] 445. Add Two Numbers II
[⭐] 446. Arithmetic Slices II - Subsequence
看了dis。
[⭐] 447. Number of Boomerangs
看了dis。方法和446挺类似。
[✅] 448. Find All Numbers Disappeared in an Array
一分钟的题
[⭐] 449. Serialize and Deserialize BST
麻烦但中规中矩的题
[⭐] 450. Delete Node in a BST
递归好用,一开始思路不对
[⭐] 451. Sort Characters By Frequency
精华在这儿:
table.sort(key = lambda x: x[1], reverse = True)
return ''.join(map(lambda x: x[0] * x[1], table))
以下一串都是类似的题,注意下区别:
[⭐] 452. Minimum Number of Arrows to Burst Balloons
[⭐] 56. Merge Intervals
[✅] 435. Non-overlapping Intervals
[✅] 253. Meeting Rooms II
[⭐] 454. 4Sum II
这啥题啊 佛了
[✅] 455. Assign Cookies
[⭐] 456. 132 Pattern
这题绝了,完全想不到。
[✅] 459. Repeated Substring Pattern
简单题,做了点避免重复计算的优化
[✅] 461. Hamming Distance
一行,是真的一行。
[⭐] 215. Kth Largest Element in an Array
快排都不会了我完了。
[⭐] 462. Minimum Moves to Equal Array Elements II
用快排。以及中位数的作用在于找到全局/平均最近距离点(了解一下
# Python heap 操作
>>> h=[] #定义一个list
>>> from heapq import * #引入heapq模块
>>> a=[3,6,1]
>>> heapify(a) #将a变成堆之后,可以对其操作
>>> heappush(h,5) #向堆中依次增加数值
>>> heappush(h,2)
>>> heappush(h,3)
>>> heappush(h,9)
>>> h #h的值
[2, 5, 3, 9]
>>> heappop(h) #从h中删除最小的,并返回该值
2
>>> h
[3, 5, 9]
>>> h.append(1) #注意,如果不是压入堆中,而是通过append追加一个数值
>>> h #堆的函数并不能操作这个增加的数值,或者说它堆对来讲是不存在的
[3, 5, 9, 1]
>>> heappop(h) #从h中能够找到的最小值是3,而不是1
3
>>> heappush(h,2) #这时,不仅将2压入到堆内,而且1也进入了堆。
>>> h
[1, 2, 9, 5]
>>> heappop(h) #操作对象已经包含了1
1
[✅] 463. Island Perimeter
[⭐] 464. Can I Win
没法一步步递推,用递归即可。
[⭐] 467. Unique Substrings in Wraparound String
[✅] 470. Implement Rand10() Using Rand7()
[✅] 472. Concatenated Words
以上两道是思路明确的。
[⭐] 473. Matchsticks to Square
递归可。
[⭐] 474. Ones and Zeroes
背包问题熟悉一下需要,递归可以但是会超时,DP要会写。
[✅] 475. Heaters
思路对。
[✅] 476. Number Complement
[✅] 477. Total Hamming Distance
啊哈有个很机智位运算的思路
[⭐] 478. Generate Random Point in a Circle
注意分布不均匀的问题,以及要怎么证明
[✅] 481. Magical String
[✅] 482. License Key Formatting
[✅] 485. Max Consecutive Ones
[⭐] 486. Predict the Winner
[✅] 492. Construct the Rectangle
[⭐] 493. Reverse Pairs
一道思路竟被我想到的hard题,写了半小时,后来发现会有负数orz。再想想。
[⭐] 494. Target Sum
递归相当于遍历2^n,用和背包问题类似的DP更好。
[⭐] 496. Next Greater Element I
猪吗
[✅] 497. Random Point in Non-overlapping Rectangles
[✅] 498. Diagonal Traverse
[⭐] 500. Keyboard Row
机智的all用法!
[✅⭐] 501. Find Mode in Binary Search Tree
自己写的空间O(n)一次过;要求的空间O(1)比较复杂,自己重写了一个。
[⭐] 1066. Campus Bikes II
递归和map剪枝
[✅] 70. Climbing Stairs
方法一递归,O(2^n)
方法二DP,O(n)
方法三
[✅] 509. Fibonacci Number
[✅] 503. Next Greater Element II
[✅] 504. Base 7
[✅⭐] 506. Relative Ranks
quicksort这么多bug好意思吗你....
[✅] 507. Perfect Number
[✅] 508. Most Frequent Subtree Sum
[✅] 510. Inorder Successor in BST II
[✅] 285. Inorder Successor in BST
[✅] 513. Find Bottom Left Tree Value
[⭐] 1011. Capacity To Ship Packages Within D Days
[✅] 514. Freedom Trail
从map中删东西用record.pop(key)
[⭐] 516. Longest Palindromic Subsequence
[✅] [Quora]concatenationsSum
[✅] [Quora]mutateTheArray
[✅] [Quora]countTinyPairs
[✅] [Quora]mergeStrings
[⭐] 518. Coin Change 2
如何避免重复组合的???
[✅] 520. Detect Capital
[✅] 524. Longest Word in Dictionary through Deleting
nums[st:ed].sort()
这种方式没法给sublist排序。
d.sort(key = lambda x: (-len(x),x))
可以首先按照字符串的长度降序排,长度相同的时候按照字典升序排!
[⭐] 525. Contiguous Array
机智
[⭐] 526. Beautiful Arrangement
递归
[⭐] 527. Word Abbreviation
random.randint(1,3)
中取随机数的时候,1,2,3都能取到,前后是闭的。
[✅] 528. Random Pick with Weight
[⭐] 532. K-diff Pairs in an Array
打星熟悉一下counter的用法。
[✅] 536. Construct Binary Tree from String
unicode可以用isnumeric(),普通的只能用isdigit()
括号brackets,异或Exclusive or,
五除以三的余数 The remainder of five divided by three
[✅] 537. Complex Number Multiplication
[✅] 538. Convert BST to Greater Tree
[✅] 539. Minimum Time Difference
[⭐] 155. Min Stack
[⭐] 399. Evaluate Division
麻烦但不难的,图的遍历还是要熟悉的。
[✅] 163. Missing Ranges
[⭐] 540. Single Element in a Sorted Array
思路对,但写的不熟练,错了好多次。
[⭐] 95. Unique Binary Search Trees II
在干嘛?
[✅] 541. Reverse String II
chrs[st:ed] = reversed(chrs[st:ed])
[✅] 542. 01 Matrix
[✅] 543. Diameter of Binary Tree
[⭐] 410. Split Array Largest Sum
二分法,很多坑,很好用,想一下。
[✅] 545. Boundary of Binary Tree
[✅] 904. Fruit Into Baskets
[✅] 929. Unique Email Addresses
[⭐] 975. Odd Even Jump
[⭐] 857. Minimum Cost to Hire K Workers
[⭐] 947. Most Stones Removed with Same Row or Column
太难了,真的不会。。。
[✅] 222. Count Complete Tree Nodes
[⭐] 833. Find And Replace in String
就一个点不对!最后的一截要记得加上!
[⭐] 939. Minimum Area Rectangle
啊哈O(n2)就超时了
[⭐] 777. Swap Adjacent in LR String
思路大概是有的,但是没想到这么简洁的方法。
[✅] 299. Bulls and Cows
[⭐] 253. Meeting Rooms II 会议室之二
机智。
[⭐] 135. Candy
很久前做过,这次有思路但是还是有点没想到。
[✅] 809. Expressive Words
[✅] 849. Maximize Distance to Closest Person
头尾边界注意一下,别的没有问题。
[✅] 562.Longest Line of Consecutive One in Matrix
[⭐] 1057.Campus Bikes
[✅❌] Google Interview Document
不同步传输的版本写出来了,同步的是不对的。
[✅] 900. RLE Iterator
facebook的题
[⭐] 273. Integer to English Words
[❌] 301. Remove Invalid Parentheses
[✅] 297. Serialize and Deserialize Binary Tree
用括号的方法重新写了一遍,可!
[⭐] 621. Task Scheduler
认真想能想到。
[⭐] 560. Subarray Sum Equals K
佛了,思路太绝了。
[✅] 426. Convert Binary Search Tree to Sorted Doubly Linked List
[⭐] 282. Expression Add Operators
[✅] 238. Product of Array Except Self
[✅] 314. Binary Tree Vertical Order Traversal
[❌] 158 Read N Characters Given Read4 II.py
[⭐] 211. Add and Search Word - Data structure design
trie node了解一下咯!
[⭐] 269. Alien Dictionary 另类字典
一开始是 没想到topological sort的思路转换,想到之后可写,但仍然没能bugfree。
[✅] 680. Valid Palindrome II
简单!
[✅] 278. First Bad Version
[✅] 173. Binary Search Tree Iterator
[⭐] 124. Binary Tree Maximum Path Sum
不难但tricky!想下left and right is negative的情况怎么处理比较简洁(且不bug!)
[⭐] 785. Is Graph Bipartite?
自己有思路,但是不太对也不够好,要优化。
[✅] 31. Next Permutation
写过,有思路,不难。
[⭐⭐] 523. Continuous Subarray Sum
我靠其实这么简单的题,东拼西补错误提交了6次,别干了...
[✅] 953. Verifying an Alien Dictionary
[✅] 121. Best Time to Buy and Sell Stock
简单题
[⭐] 76. Minimum Window Substring
框架和思路都对,template也记得,有一点是更新res的句子放在哪里比较合适???
[⭐] 15. 3Sum
看了之前的解法。三个指针,注意避免重复就可以。
[✅] 304. Range Sum Query 2D - Immutable
[✅] 438. Find All Anagrams in a String
[✅] 543. Diameter of Binary Tree
[✅] 56. Merge Intervals
[⭐] 215. Kth Largest Element in an Array
heap用法注意下。
h = []
for num in nums:
if len(h) < k:
heappush(h,num)
# print(h[0])
elif h[0] < num:
heappushpop(h,num)
return h[0]
[⭐] 689. Maximum Sum of 3 Non-Overlapping Subarrays
也太难了吧orz,一步步慢慢写,很多很多坑。
[⭐] 317.Shortest Distance from All Buildings
dfs递归容易写,但需要多次修改值,TLE。看了discussion之后改用bfs迭代,麻烦些但是很快。都要会。
[✅] 636. Exclusive Time of Functions
start的timestamp表示当前秒的开始,end的timestamp表示当前秒的结束,神奇。
[⭐] 236. Lowest Common Ancestor of a Binary Tree
绝了
[✅] 143. Reorder List
[✅] 23. Merge k Sorted Lists
维护一个最小堆就很飞速了。以及如果要让heap按照listnode的value排序,还是需要一个tuple,输入(node.val, node)的形式。
[✅] 257. Binary Tree Paths
[✅] 133. Clone Graph
倒也不难,一次过。
[✅⭐] 98. Validate Binary Search Tree
iteration一次过,recursion想了一下。都需。
[✅] 29. Divide Two Integers
[✅] 973. K Closest Points to Origin
[✅] 91. Decode Ways
[✅] 251. Flatten 2D Vector
[✅] 33. Search in Rotated Sorted Array
[❌] 65. Valid Number
这啥傻子题目啊我靠
[✅] 200. Number of Islands
[✅] 349. Intersection of Two Arrays
一行,行。
[⭐] 162. Find Peak Element
只要找到存在的一个下标即可,所以更改st和ed的条件比较宽松。
[✅] 199. Binary Tree Right Side View
毫无难度,层次遍历一次即可。
[✅⭐] 674. Longest Continuous Increasing Subsequence
intuitive很容易过,但可以想下怎么提速(5%👉95%)
[⭐] 146. LRU Cache
满分标准答案,double linked list
[⭐] 721. Accounts Merge
这个dfs用的很绝,思路有方向,但是具体想半天没想到。
[✅] 340. Longest Substring with At Most K Distinct Characters
[❌] 336. Palindrome Pairs
太难了看了半个小时没看懂,先跳过...
[✅] 43. Multiply Strings
[⭐] 283. Move Zeroes
easy但没bugfree,看清题目请。
[⭐] 114. Flatten Binary Tree to Linked List
写了递归和迭代,但这种是我想不到的方法。
[✅] 25. Reverse Nodes in k-Group
链表可能是我唯一比较有把握写出来的hard题了。
[⭐] 350. Intersection of Two Arrays II
题不难,可熟悉下counter的操作和用法。
[✅] 34. Find First and Last Position of Element in Sorted Array
[✅] 347. Top K Frequent Elements
[✅] 896. Monotonic Array
[✅] 1042. Flower Planting With No Adjacent
有点繁琐,但也不难,DFS一次过。
[✅] 824. Goat Latin
[⭐] 277. Find the Celebrity
[✅] 567. Permutation in String
ed更新时机注意一下,别的没啥。
[⭐] 708. Insert into a Cyclic Sorted List
三种插入情况,少了一种于是死循环了。
[✅] 622. Design Circular Queue
基础数据结构
[✅] 139. Word Break
一次过,做太多次了
[✅] 17. Letter Combinations of a Phone Number
[❌⭐] 300. Longest Increasing Subsequence
方法绝了
[✅] 865. Smallest Subtree with all the Deepest Nodes
[✅] 477. Total Hamming Distance
[✅] 138. Copy List with Random Pointer
[⭐] 825. Friends Of Appropriate Ages
有点绕,但不难。关于如何减少重复计算。
[⭐] 239. Sliding Window Maximum
这题看一次懵一次。每次都想不到这个解法,放弃辽。
[✅] 32. Longest Valid Parentheses
[⭐] 398. Random Pick Index
经典的随机采样方法,绝了。
randint(0,count)
的取样空间是[0, count]
,左右都闭。
[✅] 5216. Count Vowels Permutation
[✅] 5215. Path with Maximum Gold
[✅] 5214. Longest Arithmetic Subsequence of Given Difference
[✅] 5213. Play with Chips
以上四道是leetcode周竞赛,题都不难,40min完成。
[✅] Twitter. Partitioning Array
[✅] Twitter. Buying Show Tickets
[✅] Twitter. Final Discounted Price
[✅] Twitter. Twitter Social Network
以上四道是twitter OA,题都不难,50min完成。
[⭐] 419. Battleships in a Board
dfs也能做但比较慢,太机智了这方法。
[✅] 8. String to Integer (atoi)
[✅] 13. Roman to Integer
[✅] 548. Split Array with Equal Sum
[✅] 791. Custom Sort String
[✅] 329. Longest Increasing Path in a Matrix
[✅] 387. First Unique Character in a String
[❌] 564. Find the Closest Palindrome
不想做
[⭐] 632. Smallest Range Covering Elements from K Lists
[✅] 986. Interval List Intersections
啊哈两指针一次过(intersection看起来比union容易很多)
[⭐⭐] 332. Reconstruct Itinerary
三次了还是不会,哭
[✅] 5. Longest Palindromic Substring
[⭐] 494. Target Sum
DP!!
[⭐] 658. Find K Closest Elements
思路对,有几处小失误没bug free。
[✅] 266. Palindrome Permutation 回文全排列
没有难度
[✅] 3. Longest Substring Without Repeating Characters
做了十几次类似题了再错了说不过去了
[✅] 408. valid word abbreviation
数字可能是一位以上的。别的没问题。
[✅] 270. Closest Binary Search Tree Value
[✅] 71. Simplify Path
[⭐] 75. Sort Colors
啊有坑!停止的条件!
[✅] 153. Find Minimum in Rotated Sorted Array
[⭐] 227. Basic Calculator II
写了一半网断了。重写。
[⭐] 1209. Remove All Adjacent Duplicates in String II
[✅] 1208. Get Equal Substrings Within Budget
[❌] 1210. Minimum Moves to Reach Target with Rotations
这题有毒??
[⭐] 227. Basic Calculator II
重写了版。方法挺巧妙的。注意除法取整的时候往0的地方取,所以正负数取整方法不同。
[✅] 207. Course Schedule
经典图问题
[✅] 92. Reverse Linked List II
[✅] 445. Add Two Numbers II
[✅⭐] 116. Populating Next Right Pointers in Each Node
会写level order stack的方法,但空间是O(n)。新写了discussion里面空间O(1)的方法,绝。
[⭐] 57. Insert Interval
简单的hard题,三遍过的,反思一下?
[✅] 452. Minimum Number of Arrows to Burst Balloons
[⭐] 394. Decode String
还是有点复杂的一道题,注意下。
[⭐] 694. Number of Distinct Islands 不同岛屿的个数
不太聪明的方法(好像discussion里面也是这么写的,妥!)
[✅] 78. Subsets
[✅] 148. Sort List
mergesort的链表版本
[✅] 380. Insert Delete GetRandom O(1)
set和list一起用,很机智。
[❌] 432. All O`one Data Structure
打扰了,两百行我不信面试会出
[✅] 230. Kth Smallest Element in a BST
[⭐] 296. Best Meeting Point 最佳开会地点
[✅] 403. Frog Jump
能用table[list]的方法,通常用二维数组也能解决
[⭐] 416. Partition Equal Subset Sum
DP好用!nice!
[⭐] 126. Word Ladder II
[✅] 128. Longest Consecutive Sequence
[✅⭐] 378. Kth Smallest Element in a Sorted Matrix
暴力遍历可以,但很慢。BFS很好用,注意下visited = True的时机就可。
[✅] 430. Flatten a Multilevel Doubly Linked List
用个stack很方便。注意需要child置None,然后prev也要维护。
以上是facebook的题目,结果先接到了Amazon的OA,ok先换个题库继续。
[⭐] Amazon. Min Cost to Connect Ropes
有了思路就很简单
[✅] Amazon. 937. Reorder Data in Log Files
[✅] Amazon. Treasure Island
[✅] Amazon | OA 2019 | Treasure Island II
[⭐] Amazon. Movies on Flight
星星一下,要返回下标所以sort的时候要连着index一起。
[✅] Amazon. 138. Copy List with Random Pointer
递归也太神仙了。
[⭐] 572. Subtree of Another Tree
很简单的题,和Quora面试几乎一个意思。注意下保持树的连续性。
[⭐] 240. Search a 2D Matrix II
就,写了nlog(n)的方法,和log(n)log(n)比较了一下,速度也差不多。nlog(n)遍历到中间如果发现nums的开头已经比target大了,直接break了return false就可以。
[⭐⭐] 1192. Critical Connections in a Network
硬背一下,没太看懂Tarjan那个方法。
[✅] Amazon OA 2019 Favorite Genres
这个没啥难度,就注意一下不是所有歌都有genre的,多一个if判断。以及最后找maxvalue的时候也需要判断一下是不是空。
[✅] Amazon OA 2019 Two Sum - Unique Pairs
[✅] Amazon OA 2019 59. Spiral Matrix II
[⭐] Amazon | OA 2019 | Substrings with exactly K distinct chars
是要计数而不是找最长,不能用two pointers的方法。
[✅] Amazon OA 2019 Path With Maximum Score
DP并不难,同时可以在input处直接修改,这样空间复杂度就是O(1)了
[✅] Amazon OA 2019 5. Longest Palindromic Substring
做过很多次。
[⭐] Amazon | OA 2019 | 819. Most Common Word
counter好用,以及正则替换:
paragraph = re.sub(r'[^a-zA-z]',' ', paragraph)
[⭐] Amazon | OA 2019 | Distance Between Nodes in BST
很多技巧,tree的插入,node距离的计算
[✅] Amazon OA 2019 973. K Closest Points to Origin
minheap做,不难。以及如果要节约空间的话,正确写法是heappushpop,先push,再pop。
[❌] Amazon | OA 2019 | Min Cost to Connect All Nodes
又是连通图问题,太难了我脑子转不动了。
[⭐] Amazon | OA 2019 | 957. Prison Cells After N Days
找循环的规律。
[✅] Amazon OA 2019 763. Partition Labels
很妙的一道题。
[❌] Amazon | OA 2019 | Subtree with Maximum Average
# import sys
# sys.setrecursionlimit(10 ** 6)
做了Amazon 的 OA3和Mathworks的OA。
[✅] Mathworks | 1028. Recover a Tree From Preorder Traversal
[⭐] Mathworks | 1130. Minimum Cost Tree From Leaf Values.md
很强的做法
[⭐] Mathworks | Traveling is Fun
没学会,也懒,跳过。
[✅] Mathworks | Reverse LinkedList
以下是Microsoft的题。
[✅] 151. Reverse Words in a String
python两行
[✅] 103. Binary Tree Zigzag Level Order Traversal
[✅] 165. Compare Version Numbers
[⭐] 146. LRU Cache
双向链表,没有一次过。
[⭐] 402. Remove K Digits
以前写的版本这次超时了,然后做了下优化。
[✅] 445. Add Two Numbers II
[⭐] 253. Meeting Rooms II
两种方法最好都会(一种是st和ed存两个数组然后双指针法(另一种是维护一个不同房间end time的数组
[✅] 54. Spiral Matrix
[⭐] 122. Best Time to Buy and Sell Stock II
[⭐] 450. Delete Node in a BST
为什么bst的递归还不能一次过...
[✅] 200. Number of Islands
[✅] 443. String Compression
[⭐] 285. Inorder Successor in BST
除了走一遍中序遍历的流程之外,还可以用递归或者迭代的方法。空间复杂度更低一些。
[⭐] 706. Design HashMap
用hashmap的原理实现。
[✅] 894. All Possible Full Binary Trees
[✅] 面了Academia Edu的on campus,一道题加两个follow up,没啥难度。
[✅] 面了Riot Game的四道题,两道SQL两道Python,也不难。
以下是Facebook的题目
[✅] 987. Vertical Order Traversal of a Binary Tree
[⭐] 703. Kth Largest Element in a Stream
两次才bug free。考虑初始列表的长度不够k的情况,不是每次都需要pop的。
[⭐] 480. Sliding Window Median
可以用没用过的bisect,或者二分查找。
然后二分查找后插入是有坑的,想一下。
[⭐] 688. Knight Probability in Chessboard
机智
[⭐] 918. Maximum Sum Circular Subarray
one pass的方法绝了。两端连通找max = 整段 - 最小
[✅] 935. Knight Dialer
[✅] 392. Is Subsequence
[✅] 554. Brick Wall
[✅] Facebook Balance Parentheses
做过 一次过
[✅] Facebook 953. Verifying an Alien Dictionary
做过 一次过
[✅] Facebook 173. Binary Search Tree Iterator
和之前换了做法,不构造array存node了。
[⭐] 282. Expression Add Operators
照样没写出来的hard,但经常问,背一背。
[✅] Facebook \29. Divide Two Integers
一开始没绕过来 两次过(移位更快
[✅] Facebook 528. Random Pick with Weight
find the first element larger than or equal to the generated random number
[✅] Facebook 987. Vertical Order Traversal of a Binary Tree
level order traverse的时候手滑了一次,题也比较复杂,注意下都。
[✅] 1094. Car Pooling
思路清晰一次过。和meeting room类似的题目
[⭐] 347. Top K Frequent Elements
tip在于用[-map[num], num]
实现max heap
[✅] 865. Smallest Subtree with all the Deepest Nodes
[✅⭐] 609. Find Duplicate File in System
题不难,题后面的follow up比较难,要考虑下。
[✅] 31. Next Permutation
思路清楚bugfree一次过。从一开始到现在做了可能有四五次了...
[⭐] Facebook | Phone Screen | CSV Dinosaurs
关于python怎么读文件,太久没写了记一记。
with open(path, 'r') as f:
line = f.readline()
line = f.readline()
while line:
tmp = line.split(",")
[⭐] Facebook | 283. Move Zeroes
Keep origin sequence很重要。所以。
[❓] Facebook | Phone Screen | CSV Friends
这题很奇怪emmm,先跳一跳。
[✅] Power of Three
[❌] 862. Shortest Subarray with Sum at Least K
超时了, 还没解决。
[✅] 556. Next Greater Element III
步骤小麻烦,但解题思路和之前next permutation几乎一样
[✅] 921. Minimum Add to Make Parentheses Valid
[✅] 210. Course Schedule II
[✅] 319. Bulb Switcher
[⭐] 137. Single Number II
当时没想出来,现在也没想出来空间复杂度O(1)的方法。
[✅] 46. Permutations
[⭐] 673. Number of Longest Increasing Subsequence
方法绝了。
[⭐] 208. Implement Trie (Prefix Tree)
结构的初定义方法熟悉一下,Trie的结构懂。
[✅] 26. Remove Duplicates from Sorted Array
[✅] 443. String Compression
写出来了但改了三次才通过,比较麻烦注意下。
[⭐] 752. Open the Lock
BFS好用。
[⭐] 14. Longest Common Prefix
改了三次,反思。
[✅] 102. Binary Tree Level Order Traversal
[❌] 341. Flatten Nested List Iterator
脑子不转了,放一放
下周on campus,以下是Uber的题。
[✅] 977. Squares of a Sorted Array
[⭐] 780. Reaching Points
自己写的dp和bfs都超时了,discussion的方法很绝。
[⭐] 465. Optimal Account Balancing 最优账户平衡
hard题orz,太难了吧... 10/28看了一眼之前的方法然后写出来的。
[✅⭐] 128. Longest Consecutive Sequence
能用set转换的话其实不难,但是不知有没有别的限制。如果不用set的话还需要考虑挺多情况的。
排序之后,重复的数字怎么操作。res需要每次都更新。
[✅] 53. Maximum Subarray
O(N)可以解决的题不懂为什么一定要用又复杂又O(NlgN)的分治。
不过都能写。
[⭐] Uber Strange Pairs
批了马甲的128,但是要记录个路径。写出来了但是磕磕绊绊的,面试估计就挂了orz(
[✅] 112. Path Sum
递归迭代都可。
[⭐] Uber 486. Predict the Winner
方法太绝了吧。是递归,想下具体怎么写。
递归想清楚了就不难,然后避免重复计算很重要,不然会超时。
[⭐] Uber Follow-up of 122. Best Time to Buy and Sell Stock II
[✅] 4. Median of Two Sorted Arrays
为什么这题会是hard?难度到了吗?
[✅] 1029. Two City Scheduling
可以,方法很机智。做过一次下次就会了(大概)。
[✅] 127. Word Ladder
[✅] Uber Segerate Odd and Even
[✅] 199. Binary Tree Right Side View
[✅] 235. Lowest Common Ancestor of a Binary Search Tree
[⭐] 560. Subarray Sum Equals K
[⭐] Number of subarrays having sum exactly equal to k
这么常见的题还错是想怎样...
然后quick sort和quick select也都熟悉一下
[✅] 101. Symmetric Tree
[✅] 783. Minimum Distance Between BST Nodes
[⭐⭐] 212. Word Search II
很经典的trie用法。这边可以定义一个Trie Class,也可以直接用嵌套的map。速度的话后者快,但是前者更正规一些。
过两天再写一次。
[⭐] 76. Minimum Window Substring
很久没练这类型的题了orz。
[⭐] 1192. Critical Connections in a Network
太难了...还好OA没遇到...
[✅] 973. K Closest Points to Origin
[⭐] 399. Evaluate Division
非常公式化的过程,建graph,找通路
[✅] 451. Sort Characters By Frequency
[✅] 427. Construct Quad Tree
第一次做到的时候感觉太复杂就跳过了,今天看面经有问到这题就做了一下,倒也不难...
[✅] 59. Spiral Matrix II
[✅] Uber Valid Matrix
DFS这几天写吐了o(TヘTo)
[✅] 300. Longest Increasing Subsequence
[✅] 46. Permutations
[⭐] 47. Permutations II
[✅] 1130. Minimum Cost Tree From Leaf Values
[⭐] Maximal value among shortest distances in a matrix
是之前matlab的OA题,听说他们面试可能会复盘所以...!!
这不就是最基础的BF+BFS吗我之前为什么看不懂....
[✅] 253. Meeting Rooms II 会议室之二
[⭐] 31. Partition Array
难度没有,注意下最后return的时候,如果当前所有数字都小于k,那需要另外+1
这个corner case很多题我都不记得
[✅] 88. Lowest Common Ancestor of a Binary Tree
不是bst,遍历一下就可
[✅] 532. Reverse Pairs
[✅] 671. Second Minimum Node In a Binary Tree
[✅] 503. Next Greater Element II
[✅] 215. Kth Largest Element in an Array
minheap或者quick select都行. quick select还是有点不太熟,反思。
[⭐] 322. Coin Change
DP就行。我一开始想着如果amount很大的话开不了那么大的数组,要不试试bfs。后来发现是多虑了,行。
[✅] 295. Find Median from Data Stream
[⭐] Amazon Find Median from Data Stream
[✅] 34. Find First and Last Position of Element in Sorted Array
Amazon VO的问题。
[⭐] 472. Concatenated Words
很绝的方法,是亚麻高频。
[⭐] 140. Word Break II
也是hard题
[✅] 697. Degree of an Array
[✅] 49. Group Anagrams
[✅] 96. Unique Binary Search Trees
[✅] ByteDance_Video_Interview
[✅] ByteDance_Video_Spider_Detector
感谢贾凡凡的头像,找到实习了。
和Leetcode挥手告别。
[✅] 1030. Matrix Cells in Distance Order
[✅] Minimum steps to reach target by a Knight
[⭐] Count Print Characters
不是我写的,但是贡献了一丢丢思路
[❌] 341. Flatten Nested List Iterator
[✅] Minimum steps to reach target by a Knight
[⭐] Count Print Characters