Zhouzhiling / leetcode

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

12.1.2018

[]Kickstart_2018_Practice_ProblemC_SortItinerary

12.2.2018

[]Kickstart_2018_Practice_ProblemB_Googol String

12.3.2018

[]Kickstart_2018_RoundA_Problem_A

[]Kickstart_2018_RoungB_ProblemA_No Nice

  • 写是写出来了,但是要跑很久,估计会超时。用的还是遍历的方法,需要想一下更快的。

12.4.2018

[]Kickstart_2018_Practice_ProblemA_GBus count

12.5.2018

[]Kickstart_2018_RoundH_ProblemA_BigButtons

[]Kickstart_2018_RoundH_ProblemB_Mural

[]Kickstart_2018_RoundH_ProblemC_LetMeCountTheWays

12.6.2018

[]Kickstart_2018_RoungG_ProblemA_Product Triplets

  • 一开始没想清楚,后来提交错误以后一个个加if变得很丑,重新想思路没想出来。

  • 这里 是类似题目的巧妙解法,条件简单了一些因为提供了ratio。这题还要再想一下。

[]Kickstart_2018_RoundB_ProblemB_Sherlock and the Bit Strings

  • small test完成了,large test复杂了很多,想十分钟没想出来,之后继续。

12.7.2018

[] 11. Container With Most Water

  • 看了很机智的答案,还有数学证明23333,复杂度是O(N)的。最简单的就暴力O(N^2)。

[] 12. Integer to Roman

[] 13. Roman to Integer

12.8.2018

[] 13. Roman to Integer.md

[] 6. ZigZag Conversion.md

[] 7. Reverse Integer.md

12.10.2018

[] 1. Two Sums.md

  • 看了自己以前的答案,太机智了!

[] 2. Add Two Numbers.md

  • 要多熟悉一下链表的用法

[] 3. Longest Substring Without Repeating Characters.md

[]. 4. Median of Two Sorted Arrays.md

  • 果然是hard型的题目,好好想下噢!

12.11.2018

[]19. Remove Nth Node From End of List.md

[]24. Swap Nodes in Pairs.md

[]25. Reverse Nodes in k-Group.md

  • 写出来了但是写了半小时,不够熟练。

12.12.2018

[] 30. Substring with Concatenation of All Words

[] 29. Divide Two Integers

[] 31. Next Permutation

[] 26. Remove Duplicates from Sorted Array

12.13.2018

[] 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

12.14.2018

[]39. Combination Sum

  • 看了答案w

[] 36. Valid Sudoku

[] 40. Combination Sum II

[] 41. First Missing Positive

  • 机智!!

[] 42. Trapping Rain Water

[] 43. Multiply Strings

12.15.2018

[] 46. Permutations

[] 47. Permutations II

[] 48. Rotate Image

[] 49. Group Anagrams

  • 自己写出来啦,但是看到的方法超简单,四行完成!学会用tuple!

[] 50. Pow(x, n)

[] 21. Merge Two Sorted Lists

[] 20. Valid Parentheses

[] 15. 3Sum](https://github.com/Zhouzhiling/kickstart/blob/master/15.%203Sum.md)

[] 16. 3Sum Closest

[] 18. 4Sum

[] 14. Longest Common Prefix

[] 9. Palindrome Number

[] 54. Spiral Matrix

  • debug了很久,想清楚边界条件再写。

[] 45. Jump Game II

  • 自己写的递归超时了orz。 跪拜的巧妙解法!!!

[] 55. Jump Game

  • 同上解法。

[] 56. Merge Intervals

  • 不难,学到了自定义规则来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());

12.17.2018

[] 59. Spiral Matrix II

[] 61. Rotate List

[] 62. Unique Paths

[] 63. Unique Paths II

[] 64. Minimum Path Sum

[] 68. Text Justification

  • 写了半天

[] 69. Sqrt(x)

[] 70. Climbing Stairs

[] 71. Simplify Path

[] 73. Set Matrix Zeroes

[] 74. Search a 2D Matrix

  • 多种情况的二分查找要多练练

12.18.2018

[] 77. Combinations

[] 75. Sort Colors

  • 初始想法是对的,但是没想那么深入。

[] 76. Minimum Window Substring

  • 寻找substring的template,好好学一下!

[] 53. Maximum Subarray

  • 用上述template成功完成!

[] 5. Longest Palindromic Substring

12.19.2018

[] 80. Remove Duplicates from Sorted Array II

[] 82. Remove Duplicates from Sorted List II

[] 83. Remove Duplicates from Sorted List

12.20.2018

[] 86. Partition List

12.21.2018

[] 88. Merge Sorted Array

[] 89. Gray Code

[] 78. Subsets

[] 90. Subsets II

12.23.2018

今天没刷题...在看声入人心和风味人间...检讨...

12.24.2018

今天平安夜和朋友出去玩了,也没刷题...

12.25.2018

今天圣诞刷什么题呀!

12.26.2018

最后一天划水我发誓,明天开始认真!

quq

12.30.2018

quq

01.11.2019

今天是复习tree的一天!

[] 91. Decode Ways.md

[] 100. Same Tree.md

[] 94. Binary Tree Inorder Traversal.md

[] 92. Reverse Linked List II

[] 98. Validate Binary Search Tree.md

[] 101. Symmetric Tree

[] 102. Binary Tree Level Order Traversal

01.14.2019

今天同样是复习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

[] 110. Balanced Binary Tree

01.15.2019

[] 111. Minimum Depth of Binary Tree

[] 112. Path Sum

[] 113. Path Sum II

[] 114. Flatten Binary Tree to Linked List

01.16.2019

[] 118. Pascal's Triangle

[] 116. Populating Next Right Pointers in Each Node

[] 119. Pascal's Triangle II

[] 120. Triangle

[] 121. Best Time to Buy and Sell Stock

[] 122. Best Time to Buy and Sell Stock II

[] 115. Distinct Subsequences

01.18.2019

[] 125. Valid Palindrome

跳过了难的,TODO:

[]126. Word Ladder II

[]124. Binary Tree Maximum Path Sum

[]123. Best Time to Buy and Sell Stock III

01.27.2019

[] 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

01.28.2019

[] 134. Gas Station

[] 137. Single Number II

[] 133. Clone Graph

[] 136. Single Number

[] 135. Candy

01.29.2019

[] 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


Season 2

第一波刷题在过年的时候中止了,在二月的最后一天拿到了Yale MS,所以被逼着不得不开始找实习,重新刷题。因为旧的题目可能本身也手生了,所以打算把做过的120道重新再来一遍,之后如果还有时间的话就继续做新题。

开始啦!!!

03.01.2019

  1. Add Two Numbers.md

    • 一开始写的重复代码段很多,有三个while,里面的代码几乎相同。这点看了discussion以后可以改进。
  2. Median of Two Sorted Arrays

    • 方法没变,double 类型的除法注意一下。基础都忘了。1/2和1/2.0 能一样吗????
  3. Longest Palindromic Substring

    • 写了很久,边界条件判断了半天,重写。
    • 3/2重写完毕。依然需要看了方法才能想起expand函数。
  4. ZigZag Conversion

    • 写出来了,但很冗长,最好重写。

    • 初始化字符串列表的方法:L = [""] * numRows

    • 合并字符串列表的方法:Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。"".join(L)

  5. Reverse Integer

    • 不难,注意小字审题就行,溢出归零。不导入math的时候,指数的写法可以用pow(2, 31)这样。
  6. String to Integer (atoi)

    • 不难。注意str[0] == '-'str[0] is '-'的区别。前者比较是不是相同的字符,后者比较内存空间是不是一样。
    • 判断当前char是不是数字:c.isnumeric()
    • char转成int: int(c)
  7. Palindrome Number

    • 不难。记得先判断三种情况。负数直接false;0~9直接true大于9并且以0结尾直接false。
  8. Container With Most Water

    • 代码会写,要会解释证明

    • 3/4 会证明!

  9. Integer to Roman

  10. Roman to Integer

    • 简单。
  11. Longest Common Prefix

    • 不难,但没有做到bug-free。再写一遍。
    • 3/2重写完毕,nice。
  12. 3Sum

    • 如何避免重复没写出来,重写。
    • 3/1重写完成。
    • 3/2重写完成
  13. 3Sum Closest

    • 原理同上,就算不排除重复也能过,所以重写上面的15就行了。
  14. 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
  1. Valid Parentheses
    • 简单!

03.02.2019

  1. Merge two link list

    • 简单
  2. Generate Parentheses

    • 没想出来,重写。

    • 3/3 没想出来,重写。

  3. Merge k Sorted Lists

    • 不难,不过需要看一下binary heap的实现代码和方法。
    • 这里这里
  4. Swap Nodes in Pairs

    • 不难
  5. Reverse Nodes in k-Group

    • 还行,比较麻烦。思路是对的。进入reverse函数之前要记得把tail.next置None,不然会持续循环。
  6. Remove Duplicates from Sorted Array

  7. Remove Element

  8. Implement strStr()

    • 简单,一次过。
    • 这都什么傻子要求啊orz
  9. Divide Two Integers

    • 之前做的思路就挺好的,速度和内存表现都很好

    • 其中判断符号的时候:

      # 写法复杂但是计算很快
      sign = dividend > 0 and divisor > 0 or dividend < 0 and divisor < 0
          
      # 用乘法比较会慢很多很多
      # sign = dividend * divisor > 0
  10. Next Permutation

    • 注意range(50,0,-1),写法是(start, end, step_length)
  11. Next Permutation

    • 傻子,重写。如何判断下一次的permutation?

    • 如果从末尾往前看,数字逐渐变大,到了2时才减小的,然后我们再从后往前找第一个比2大的数字,是3,那么我们交换2和3,再把此时3后面的所有数字转置一下即可

    • nums.sort() sorted(nums)的区别

    • 3/3重写完毕,一次过。

  12. Longest Valid Parentheses

    • 重写。自己想的方法超时了。之前用的是discussion里面的神仙思路。
    • stack.insert(0,-1) 在stack下标0的地方放一个-1.注意写法。
    • 3/3重写,1.5次过。
  13. Search in Rotated Sorted Array

    • 重写。二分查找。怎么查的。这个都不能bug-free,你面什么狗?

    • 3/3重写。几乎一遍过,冒号等小细节

  14. Find First and Last Position of Element in Sorted Array

    • 和上面一样。 熟练掌握二分就可以。

    • 一遍过。

  15. Search Insert Position

    • 简单
  16. Valid Sudoku

    • 真是简单粗暴的方法呢。
  17. Count and Say

    • 不难
  18. Combination Sum

    • 递归版本写得出来。注意要去重(只取当前index的后半部分即可)。
    • 迭代的没想出来,discussion也都是递归,先扔着吧。
    • 3/3一开始没递归思路。看了一下以后bugfree一次过。之后多看看~!
  19. Combination Sum II

    • 和39差不多,注意如何去重。
    • 最好重新写一次。
    • 3/3一次过。
  20. First Missing Positive

    • 只记得大概的思路,不过还是写出来了。
    • 推荐重写。
    • 3/3重写没能一遍过,四处的小bug。打死自己
  21. Trapping Rain Water

    • 虽然是hard,但是过了。耶。
  22. Multiply Strings

    • 也过啦,不难。还纠正了以前的错误做法。
    • 我真棒!(发出王老舞的声音(×

二分法总结:

  • 如果左右两方都会向中间主动靠近,那么while可以写 st <= ed
  • 如果有一方不会主动靠近,另一方会:
    • 如果取mid的时候靠近主动的那边,那么while可以写 st < ed
    • 如果取mid的时候靠近不主动的那边,那就只能写st < ed - 1
  • 如果双方都不会主动靠近,那么甚至就需要写 st < ed - 1

3.3.2019

  1. Jump Game II

    • 思路是对的,很多细节没弄清楚。
    • 重写!
  2. Permutations

    • 简单
  3. Permutations II

    • 简单。去重方法,写过很多次了。
  4. Rotate Image

    • 简单
  5. Group Anagrams

    • 简单。一开始不知为啥用了set??
    • 直接"".join(sorted(word))就可以进行分类了。
  6. Pow(x, n)

    • 简单。
  7. Maximum Subarray

    • O(n) slide一遍就可以,简单。
    • divide and conquer 的复杂度明明是O(nlogn)???写法还复杂,还超时了, 给的都是啥tips啊摔。
    • 不过divide and conquer复习熟悉一下也好。
  8. Spiral Matrix

    • 不难,但是麻烦。
    • 不想写,先跳过了。
  9. Jump Game

    • 和45类似, 写出来了!
  10. Merge Intervals

    • 用的之前的方法,不太熟练,没有bug-free,建议重写。

    • discussion里面有相同的方法,很多行代码都可以简化的,注意一下。

    • 关于如何用自定义的方法来对list排序sort:

def takeStart(elem):
    return elem.start
    
intervals.sort(key=takeStart)
  1. Meeting Rooms II

    • 和56类似,简单。
  2. Non-overlapping Intervals

    • 和56类似但不太一样,推荐重写。
  3. Insert Interval

    • 简单
  4. Permutation Sequence

    • 写出来了,但建议重写一下。
  5. Rotate List

    • 简单模式!
  6. 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))
  7. Unique Paths II

    • 不难。这个用Cmn就不好写了,所以用了DP。
    • 这次i==0/j==0的时候不能直接置1,而同样需要判断
  8. Minimum Path Sum

    • 不难
  9. Plus One

    • 简单。
  10. Add Binary

    • 简单
  11. Sqrt(x)

    • 不难!同样二分查找即可!
  12. Climbing Stairs

    • 简单。
  13. Simplify Path

    • 简单
  14. Edit Distance

    • 牛逼,机智,重写!
  15. Set Matrix Zeroes

    • 看了之前的code才有思路的。推荐重写。
  16. Search a 2D Matrix

    • 第一次错了。第二次重写,也没能bug-free
    • 重写。挺复杂的,很多坑。
  17. Sort Colors

    • 不难,但有个坑没逃过,建议重写。
  18. Minimum Window Substring

    • 是一个hard系列的,掌握模板好好写。
    • 3/3非常认真看了算法以后一遍过了。建议过两天重写加深印象。

3/4/2019

  1. Minimum Window Substring

    • 写了这题的衍生maxWindow_NoRepeatChar,一遍过,耶!
  2. Combinations

    • 有一些小bug,重写一下。
    • java写了两节课才
  3. Subsets

    • 逻辑不对,重写。
    • 3/7用java写完了,过了终于。java还是不太熟emm。
  4. Word Search

    • 一个小时,没搞出来,先跳过了。
    • 想看table的最后一个维度是不能这样写的!!table [ : ] [ : ] [idx]。这样写的idx是作用在第一个维度上的!摔!
  5. Remove Duplicates from Sorted Array II

    • 有个坑和之前的排列00011112222很相似。要注意一下。
    • 3/7重写。妈的discussion里面的一个方法简直了,是人吗???重写重写!!!
    • java遍历数组的方法可以是for (int n : nums)其中nums是int[]
  6. Search in Rotated Sorted Array II

    • 很经典的题,有空可以重写。
    • python跑出来没过但是我以为我过了,ed初始化的时候要注意是len(nums)-1
    • 3/7重写,第五次终于过了,重写重写重写我靠!ed和st移动的时候怎么移好好考虑好吗傻子!
  7. Remove Duplicates from Sorted List II

    • 不用重写。同理三个指针依此往后移。
    • if second.val == third.val or second.val == pre:
  8. Remove Duplicates from Sorted List

    • 82的easy模式,一次过。
  9. Largest Rectangle in Histogram

    • 太难了太难了太难了。酌情重写吧。
    • 除了O(n)以外的时间复杂度,都超时了。
  10. Partition List

    • 简单一次过
  11. Gray Code

    • 找到规律就很简单

    • 注意

      tmp = [1,2,3]
      tmp.append([4,5]) 		# [1,2,3,[4,5]]
      tmp += [4,5]			# [1,2,3,4,5]
  12. Subsets II

    • 自己写的那个有点慢,__ contains __复杂度有点高所以最好不要用

    • 很好的递归方法,看懂之后重写。

    • 🔆java如何sort int[] nums: Arrays.sort(nums);

    • java还没写出来

  13. Decode Ways

    • 动态规划,一次过。
  14. Reverse Linked List II

    • 链表,一次过。
  15. Binary Tree Inorder Traversal

    • 树的遍历。前序+后序+中序+层次,递归和迭代,都要能写!
    • 3/8 java过了
  16. Unique Binary Search Trees II

    • 自己写出来的。不过推荐重写一下。

    • 3/8 写了个java 有点艰难 不过还是写出来了

  17. Unique Binary Search Trees

    • 和95差不多,不过只需要返回个数就行了。如果直接改95的代码会超时。
    • 可以用一个list保存当前n个节点的树可能的个数,这样就不用重复计算了。
  18. 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

3/5/2019

  1. 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
  1. 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
  1. Same Tree

    • 一遍过
  2. Symmetric Tree

    • 递归和stack都能做,一遍过。
  3. Binary Tree Level Order Traversal

    • 简单一遍过
  4. Binary Tree Zigzag Level Order Traversal

    • 简单模式 一遍过
  5. 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));

  6. Construct Binary Tree from Preorder and Inorder Traversal

    • 递归 一遍过(python
    • java的递归写了一百遍,重写。
    • 3/8 java的递归再次写了一百遍。我靠st和ed好好算会死吗???
  7. Construct Binary Tree from Inorder and Postorder Traversal

    • 和105一毛一样的思路
    • java写了一遍,稳。
  8. 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			# ❌
  9. Convert Sorted Array to Binary Search Tree

    • 一次过。
  10. Convert Sorted List to Binary Search Tree

    • 对于链表没法直接得到最中间的元素。那么用fast和slow方法就非常有效了!discussion太机智了!

    • 重写重写,搞了半天,反思。

    • 3/8重写,几乎一遍过。一些小细节。

  11. Balanced Binary Tree

    • 第一次没想出来。重写。想清楚helper实现的功能是什么?

    • 3/8 一次过。

  12. Minimum Depth of Binary Tree

    • 重写。min-depth的定义好好看看??
    • 3/8 java重写完。几乎一次过。
  13. Path Sum

    • 差点一次过。题目判断空树的和没法为0.

    • if的数量最少3个就够了。

    • java比python不知道快到哪里去了。

    • 3/8 一次过

  14. Path Sum II

    • 一遍过 不难
  15. Flatten Binary Tree to Linked List

    • 一遍过,用了两个stack,一个用来preorder遍历,一个用来存node。

    • 然后遍历第二个,构造类似linked list的结构即可。

    • discussion里面有间接版本的,但是我没看懂,嗯。

  16. Distinct Subsequences

    • 想法是对的,用DP。如何构造table的时候要想清楚各自的含义!
    • 重写!
    • 3/8 java一次过!
  17. Populating Next Right Pointers in Each Node

    • 自己写的,层次遍历之后算出每层的个数然后指过去(因为是完全二叉树)。空间复杂度O(n)了。

    • discussion里面有超简单的方法!重写!

    • 3/8 一次过

3.7.2019

  1. Populating Next Right Pointers in Each Node II

3.8.2019

把之前标记要重写的题重写了。继续往下啦!

  1. Pascal's Triangle

    • java一遍过。

    • List<List<Integer>> res 获取某个元素的方法是 res.get(0).get(0)

  2. Triangle

    • 曾经想出来过,不过也不难。可以重写。

    • java里面 整数类型(byte、short、int、long)的基本类型变量的默认值为0

    • 3/20 一遍过,但是第一遍没有用最简单的方法,第二遍才。

  3. Best Time to Buy and Sell Stock

    • 没思路,有了就很简单。重写。
    • 遍历一次就好了。
    • 3/20 一次过
  4. Best Time to Buy and Sell Stock II

    • 五行就行,重写一下。

    • 3/20 一遍过

  5. Binary Tree Maximum Path Sum

    • 有点tricky,重写。
  6. 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)

3.11.2019

  1. Longest Consecutive Sequence

    • 看了思路之后python一遍过,重写。

    • 3/20 重写一遍过

  2. Sum Root to Leaf Numbers

    • java一遍过。
  3. Surrounded Regions

    • 先跳过,感冒了脑子不转了,之后做。

    • 3/20依然不想做 什么傻子题目...

  4. 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 重写 一次过。

  5. Palindrome Partitioning II

    • DP即可,有坑注意。3/20几乎一次过。
  6. Clone Graph

  • 图论里面经典的算法,要掌握的。
  • 3/20没能一次过 我的锅
  1. Gas Station

    • java几乎一遍过。但是很慢。

    • discussion里面是什么神仙方法啊 看不太懂但是直觉告诉我是可以的

    • 3/20 一次过

  2. Candy

    • 我记得当时也是有非常tricky的方法,想不起来了。
  3. Single Number

    • java 异或 一遍过

    • java用map的基本语法还不太熟,多看看。重写。

    • 3/20一遍过

  4. Single Number II

    • 一遍过
    • 3/20 ↑什么一遍过,效率极低的一遍过orz。discussion里面有正统的写法,暂时没懂。要再看看。
  5. Copy List with Random Pointer

    • 竟然java一次过了我简直!!
    • 3/20 递归和迭代都行了,迭代会麻烦一点。
  6. Word Break

    • 看了discussion里面动态规划的方法,重写重写。
    • 但是复杂度是O(n^2),击败了48%感觉有点慢?
  7. Linked List Cycle

    • 一次过。fast和slow果然非常好用啊!
  8. Linked List Cycle II

    • 看了原理之后一次过。看过之后会证明了,但是第一次没想出来。
    • 3/21 一次过
  9. 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的。

3.12.2019

[] 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(or StringBuffer) class and its append method. String conversions are implemented through the method toString, defined by Object 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())
    ...
    

3.13.2019

[] 171. Excel Sheet Column Number

[] 172. Factorial Trailing Zeroes

怎么回事中间有一堆SQL的题目...跳过了先。

[]188. Best Time to Buy and Sell Stock IV

  • 想不出,没太想,先跳过。

3.14.2019

[] 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

3.15.2019

[] 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];

3.16.2019

[] 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好吧。

3.17.2019

[] 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

  • 不想看了,关于如何把一个中缀表达换成后缀表达然后计算的问题。
  • 但是还是需要的,之后记得看。教程

3.18.2019

[] 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以想通了也一次过。

3.19.2019

[] 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

  • 还没看和整理

3.23.2019

[] kickstart_super_2048

  • 自己写的,但是写了太久了...

3.24.2019

[]278. First Bad Version

  • 放个星星买教训orz 佛了

  • int mid = st+(ed-st)/2;	//这个正常
    int mid = (st+ed)/2;	//这个如果是两个大数的话会越界

[] Round A. Training

  • small过了,large没过

[] Round A. Parcels

  • small过了,large没过

[] Round A. Contention

  • small没过,large更没过
  • 你菜死算了

3.27.2019

[] Round A. Training

  • 检查了复杂度O(N)的方法,想得到的话也不太难emm

4.1.2019

[] 279. Perfect Squares

4.3.2019

[] 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);

4.3.2019

[] 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

4.4.2019

[] 300. Longest Increasing Subsequence

  • 自己写的是DP,复杂度是n平方。
  • discussion里面是nlogn,这个可以重写。
  • 4/20 没想出来 看了之前的过程才写出来哭

4.8.2019

[] 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

  • 太难了又太机智了,想想清楚!重写!

4.9.2019

[] 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

  • 我几乎和这道题磕了一天,死。

4.10.2019

[] 316. Remove Duplicate Letters

  • 贪心算法行不通,哭。要再想想。

[] 319. Bulb Switcher

[] 318. Maximum Product of Word Lengths

  • 思路一样,数据存储方式的差别会导致速度50%和90的差别%。
  • (我写的当然是50%了(理直气壮
  • 所以重写。

4.11.2019

[] 321. Create Maximum Number

  • 昨天只写出来了数字不重复的版本,重复的测试没过,要再想想。
  • 今天看了discussion终于弄出来了,不容易啊quq。

4.12.2019

[] 322. Coin Change

  • 没想出来,重写。

4.14.2019

[] 324. Wiggle Sort II

  • 理解了应该不难,还没看解释。

[] 326. Power of Three

  • 这么简单还没能一遍过,菜
  • 用不用循环两种方法都写下

[] 327. Count of Range Sum

  • 暂时还是只有O(n^2)的方法,行吧

4.15.2019

[] 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

  • 自己写出来的耶!一些边界情况注意一下,别的就没啦!

4.16.2019

[] 332. Reconstruct Itinerary

  • 拓扑遍历图的方法,完全忘了,重写。

[] 334. Increasing Triplet Subsequence

  • 非常机智的方法!本来应该想得出来的!重写!等号的边界条件要注意。

4.17.2019

[] 336. Palindrome Pairs

  • 太难了这题我真的,看discussion的算法和trie tree的结构看了半天。
  • trie tree了解一下大概就行了quq。

KMP算法

Trie Tree结构

[] 337. House Robber III

  • 递归过了,但是比较慢,有很多重复计算。
  • 如何避免重复计算。

[] 338. Counting Bits

  • 自己想的,两遍过。边界条件注意下。

4.18.2019

[] 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

4.20.2019

[] 354. Russian Doll Envelopes

  • 太难了真的,完全想不到...

[] 357. Count Numbers with Unique Digits

  • 数学题。

[] 363. Max Sum of Rectangle No Larger Than K

  • 傻子暴力搜索算法

4.21.2019

[] 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大噢,好好想下。

4.23.2019

[] 374. Guess Number Higher or Lower

5.6.2019

[] 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写的不熟。

5.7.2019

[] 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


7.27

[] 1. 两数之和

根据map的提示,思路顺,一次过。

[] 2. 两数相加

思路顺,一次过。

[] 3. 无重复字符的最长子串

更新max_len的位置欠考虑,三次过。

7.27

[] 4. 寻找两个有序数组的中位数

O(n+m)的两次过,边界条件第一次没考虑好。

O(lg(n+m))也两次过,同边界条件。

[] 5. 最长回文子串

一次过。

7.28

[] 6. Z 字形变换

一开始在纸上写了下,想着用queue可行,但坑太多了。三次没过。

后来还是生成numRows个字符串然后拼接起来更快。两次过。

拼接: ''.join(res)

[] 7. 整数反转

思路对,一次过。

[] 8. 字符串转换整数 (atoi)

奇怪的题目,因为下标越界的错,两次过。

[] 9. 回文数

思路对,一行的写法是 return str(x) == str(x)[::-1]

不然就reverse int之后比较数字,特殊情况是<0, [0, 9], x % 10 == 0的时候。

python int→string是str(134)

[] 11. 盛最多水的容器

方法思路对,一次过。

证明方法没想出来。

7.29

[] 14. 最长公共前缀

方法思路对,一次过。

[] 15. 三数之和

第一次把TwoSum作为函数,写的有点乱,改了几次才过。当有一串重复数字的时候,前面的直接加入map不判断,只判断最后一位即可。倒过来就不行。要构造n次map所以一定很慢了... 用三个指针就能解决,注意重复问题就可。

7.30

[] 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. 合并两个有序链表

轻松!

7.31

[] 22. 括号生成

迭代有点小难,改了几次才过。

我猜我之前是递归做的,明天看下!

我回来了。递归不会写,重写!

[] 23. 合并K个排序链表

不看效率的话是easy题,遍历合并即可,复杂度是node总数*list个数。

要提升效率的话,每次做两两合并,复杂度是list长度*log(list个数)。👈终止条件要考虑下,第一次错了。

[] 24. 两两交换链表中的节点

没有难度,注意指针后移的时候需要按照交换后的顺序即可。

[] 25. K 个一组翻转链表

思路对,一次过。

[] 26. 删除排序数组中的重复项

思路对,一次过。

[] 27. 移除元素

不太懂26和27的意义和难点在哪儿...

8.1

[] 28. 实现strStr()

我还是不懂难点在哪儿...

[] 29. 两数相除

思路对,一次过

[] 31. 下一个排列

这题挺好的,很多坑。怎么选取要交换的下标,怎么替换。

[] 32. 最长有效括号

猜到了会出怎样的用例来测超时(但还是超时了,fine

写了最原始的暴力搜索,和带一些DP的暴力搜索,但都超时了。

看了看记录之前也是看答案的,答案的解法真的amazing!

8.2

[] 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题,一次过。

8.3

[] 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

8.4

[] 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

没难度++

8.5

[] 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。想一想。

8.6

[] 76. Minimum Window Substring

啊思路对但是没写出来。十点了下班了明天再说。

重写了两次才过。重写重写。

[] 77. Combinations

思路对,两次过。

[] 78. Subsets

思路不对,两次过。这里使用了递归就不需要在外层遍历了。

8.8

[] 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. 二叉树的后序遍历

[] 230. 二叉搜索树中第K小的元素

树的遍历系列!

8.18

[] 95. 不同的二叉搜索树 II

递归我可以,但是两次过。考虑一下空树要怎么写。

[] 96. 不同的二叉搜索树

第一遍用了95里面的递归,返回类型改成了int,超时。

第二遍依然用的递归,只是开了一个表记录了之前计算过的值,超时。

第三遍放弃模拟树的生成过程,DP不好吗!?

[] 97. 交错字符串

是我自己想出来的hard题呜呜呜感动。

写的比较久,[[]]来表示矩阵还是不够熟练,DP大法好。

[] 98. Validate Binary Search Tree

巧妙!

8.23

[] 100. Same Tree

[] 101. Symmetric Tree

[] 102. Binary Tree Level Order Traversal

[] 103. Binary Tree Zigzag Level Order Traversal

[] 104. Maximum Depth of Binary Tree

以上都是树的简单题,递归一次过。

8.24

[] 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

[] 110. Balanced Binary Tree

[] 111. Minimum Depth of Binary Tree

为什么今天的题都毫无难度。

8.26

[] 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两次过

8.28

[] 118. Pascal's Triangle

[] 119. Pascal's Triangle II

都一次过

[] 120. Triangle

[] 122. Best Time to Buy and Sell Stock II

[] 128. Longest Consecutive Sequence

这个有点难,我想不到。

[] 129. Sum Root to Leaf Numbers

8.29

一题一题做进度有点慢,从之前打星的题开始了。

[] 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

[] 141. Linked List Cycle

[] 142. Linked List Cycle II

[] 143. Reorder List

[] 147. Insertion Sort List

[] 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

我又可以了

[] 162. Find Peak Element

我能写,但是要口述原理的话要想想

为什么二分查找大的那一半一定会有峰值呢?(即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)

8.30

[] 169. Majority Element

碰撞法,好用

[] 191. Number of 1 Bits

[] 199. Binary Tree Right Side View

一开始思路不对,后来改正了。

[] 200. Number of Islands

看了之前的才写出来><

[] 201. Bitwise AND of Numbers Range

想了一会儿但还是写出来了w

[] 204. Count Primes

啊啊我傻了,空间换时间之后完全用不到isPrime函数,重写重写

[] 205. Isomorphic Strings

写了两次,对应关系没搞清楚。

8.31

[] 207. Course Schedule

graph又忘完了!好不好意思!??

[] 213. House Robber II

[] 220. Contains Duplicate III

太难了,bucket写一次忘一次

9.1

[] 221. Maximal Square

还是没自己想出来> <

[] 222. Count Complete Tree Nodes

[] 225. Implement Stack using Queues

[] 231. Power of Two

[] 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

[] 264. Ugly Number II

思路对,看了小提示写出来的

[] 278. First Bad Version

9.2

[] 287. Find the Duplicate Number

基础方法一次过,用链表成环的方法可太机智了。

[] 290. Word Pattern

[] 297. Serialize and Deserialize Binary Tree

写了挺久,但一次过。

[] 300. Longest Increasing Subsequence

[] 306. Additive Number

写了很久,很麻烦,但思路不难。

[] 309. Best Time to Buy and Sell Stock with Cooldown

看了之前的做法没看懂,然后发现三月份的自己给现在的我写了一段话:

行吧我为discussion里面的神仙解法,以及一步一步继续简化变量和方法的算法折服,深深地折服。

我之后一定会看不懂代码的,戳这里重新看讲解吧。

佛了,我属于我自己!

[] 310. Minimum Height Trees

懒,不想做。

[] 315. Count of Smaller Numbers After Self

这题真的太难了...原理其实不太难,但很麻烦,踩坑无数。改天重新写下练习。

[] 316. Remove Duplicate Letters

想了10min没思路,看了discussion,这方法绝了。

[] 318. Maximum Product of Word Lengths

9.3

[] 322. Coin Change

递归和迭代两种做法,都没写出来,傻的吗。

[] 326. Power of Three

[] 327. Count of Range Sum

超时了,之后要看下nlogn的解法。

[] 329. Longest Increasing Path in a Matrix

[] 330. Patching Array

自己写的DP内存爆了,discussion里面的方法真是绝了。

[] 332. Reconstruct Itinerary

拓扑图遍历又忘了,我真是要完了。

[] 334. Increasing Triplet Subsequence

[] 337. House Robber III

如何做效率比较高的dfs。

[] 338. Counting Bits

[] 345. Reverse Vowels of a String

9.4

[] 354. Russian Doll Envelopes

方法绝了。就算方法想不出,寻找最长递增子列总要会写吧orz傻子。

[] 363. Max Sum of Rectangle No Larger Than K

[] 368. Largest Divisible Subset

太难了,不想动脑子,先跳过。

9.5

[] 372. Super Pow

啊啊终于做出来了,论数学的重要性

[] 376. Wiggle Subsequence

[] 377. Combination Sum IV

[] 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转义的问题。

9.6

[] 389. Find the Difference

为什么大佬总能想到位操作,或许这就是差距吗orz。

[] 390. Elimination Game

数学题!

[] 391. Perfect Rectangle

不会做!

[] 392. Is Subsequence

简单题,一次过

[] 394. Decode String

有点麻烦,不过还是几次过了,一开始没考虑到嵌套,后来用了递归就可了。

[] 395. Longest Substring with At Least K Repeating Characters

哈哈哈哈自己写的递归,过了,打败了90%。

[] 396. Rotate Function

自己写的O(n^2),用个的简单的公式就可以O(n)。

[] 397. Integer Replacement

递归三行。

位运算会快一些,有了思路就不难,考虑重写。

[] 398. Random Pick Index

这个随机采样方法绝了,虽然看起来是很经典的算法,记一下。

9.7

[] 400. Nth Digit

是简单题但两次才过。第一次欠考虑了位数*个数的问题。不难。

[] 401. Binary Watch

这题也太好笑了。空间换时间可,暴力搜索也可。

# 统计二进制数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]

[] 402. Remove K Digits

有小坑,题不难,两种方法均可,从删bit的思路和加bit的思路考虑都可。

[] 403. Frog Jump

两种方法,递归和DP。

[] 404. Sum of Left Leaves

递归一次过。

[] 405. Convert a Number to Hexadecimal

除法取余可以,但负数的处理需要考虑下。用移位更方便。

9.8

[] 406. Queue Reconstruction by Height

有空重写下,关于排序的问题。

9.9

[] 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

写的有点麻烦,但本身题不难

9.10

[] [Google]Water Flowers

不难,按流程来就行

[] 413. Arithmetic Slices

python预定义最小值的时候可以 float('-inf'),int 不行,必须float

[] 414. Third Maximum Number

[] 415. Add Strings

[] 416. Partition Equal Subset Sum

递归可但超时,DP好用。

9.11

[] [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

9.12

[] 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挺类似。

9.13

[] 448. Find All Numbers Disappeared in an Array

一分钟的题

[] 449. Serialize and Deserialize BST

麻烦但中规中矩的题

[] 450. Delete Node in a BST

递归好用,一开始思路不对

9.14

[] 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

9.15

[] 470. Implement Rand10() Using Rand7()

[] 472. Concatenated Words

以上两道是思路明确的。

[] 473. Matchsticks to Square

递归可。

[] 474. Ones and Zeroes

背包问题熟悉一下需要,递归可以但是会超时,DP要会写。

9.16

[] 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

9.17

[] 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)比较复杂,自己重写了一个。

9.18

[] 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

9.19

[] 510. Inorder Successor in BST II

[] 285. Inorder Successor in BST

[] 513. Find Bottom Left Tree Value

9.20

[] 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

9.21

[] 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

递归

9.22

[] 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

思路对,但写的不熟练,错了好多次。

9.23

[] 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

9.24

[] 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)就超时了

9.25

[] 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

9.26

[] Google Interview Document

不同步传输的版本写出来了,同步的是不对的。

[] 900. RLE Iterator

9.27

facebook的题

[] 273. Integer to English Words

[] 301. Remove Invalid Parentheses

9.28

[] 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

9.29

[] 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]

9.30

[] 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

10.1

[] 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

10.2

[] 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一次过。

10.3

[] 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

10.5

[] 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完成。

10.6

[] 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

做了十几次类似题了再错了说不过去了

10.7

[] 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

这题有毒??

10.8

[] 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)的方法,绝。

10.9

[] 57. Insert Interval

简单的hard题,三遍过的,反思一下?

[] 452. Minimum Number of Arrows to Burst Balloons

[] 394. Decode String

还是有点复杂的一道题,注意下。

[] 694. Number of Distinct Islands 不同岛屿的个数

不太聪明的方法(好像discussion里面也是这么写的,妥!)

10.10

[] 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

10.11

[] 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就可以。

10.12

[] 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)

10.13

做了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

10.14

以下是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

除了走一遍中序遍历的流程之外,还可以用递归或者迭代的方法。空间复杂度更低一些。

10.15

[] 706. Design HashMap

用hashmap的原理实现。

10.16

[] 894. All Possible Full Binary Trees

[] 面了Academia Edu的on campus,一道题加两个follow up,没啥难度。

10.17

[] 面了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

机智

10.18

[] 918. Maximum Sum Circular Subarray

one pass的方法绝了。两端连通找max = 整段 - 最小

[] 935. Knight Dialer

[] 392. Is Subsequence

[] 554. Brick Wall

10.19

[] 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,先跳一跳。

10.20

[] 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

脑子不转了,放一放

10.23

下周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

可以,方法很机智。做过一次下次就会了(大概)。

10.24

[] 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也都熟悉一下

10.25

[] 101. Symmetric Tree

[] 783. Minimum Distance Between BST Nodes

[] 212. Word Search II

很经典的trie用法。这边可以定义一个Trie Class,也可以直接用嵌套的map。速度的话后者快,但是前者更正规一些。

过两天再写一次。

10.26

[] 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

10.27

[] 1130. Minimum Cost Tree From Leaf Values

[] Maximal value among shortest distances in a matrix

是之前matlab的OA题,听说他们面试可能会复盘所以...!!

这不就是最基础的BF+BFS吗我之前为什么看不懂....

[] 253. Meeting Rooms II 会议室之二

10.28

[] 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

10.29

[] 34. Find First and Last Position of Element in Sorted Array

Amazon VO的问题。

[] 472. Concatenated Words

很绝的方法,是亚麻高频。

[] 140. Word Break II

也是hard题

10.30

[] 697. Degree of an Array

[] 49. Group Anagrams

[] 96. Unique Binary Search Trees

10.31

[] ByteDance_Video_Interview

[] ByteDance_Video_Spider_Detector

11.1

感谢贾凡凡的头像,找到实习了。

和Leetcode挥手告别。

11.2

[] 1030. Matrix Cells in Distance Order

1.30

[] Minimum steps to reach target by a Knight

2.4

[] Count Print Characters

不是我写的,但是贡献了一丢丢思路


[] 341. Flatten Nested List Iterator

[] Minimum steps to reach target by a Knight

[] Count Print Characters

About


Languages

Language:Python 100.0%