10.29 - 所有没有写对的简单和中等题

一共五十六题,每题都写个思路,争取两小时搞定。

  1. Divide Two Integers: 二分法的思想
  2. Spiral Matrix:旋转的时候要注意边界越界情况
  3. Sort Colors: 彩虹排序
  4. Remove Duplicates from Sorted List II:不知道为何要记录这题
  5. Convert Sorted List to Binary Search Tree:用divide and conquer来做
  6. Flatten Binary Tree to Linked List:递归的方法就是先左右然后再合并,非递归的方法是preorder traversal的方法
  7. Binary Tree Upside Down: 递归的方法比较容易些,非递归的话就要用stack来模拟了
  8. Binary Search Tree Iterator:在hashnext的时候一直loop到最左边,然后调用next的时候
  9. Bitwise AND of Numbers Range:当m和n不等的时候就移位,并且记录移位的位数,直到相等的时候再朝回移位
  10. Majority Element II:设置两个candidate,然后设置两个count,用vote的方法来做就可以了
  11. Factor Combinations:backtracking的题目,不过在进入下一层循环的时候改变的量有两个n和cur
  12. Verify Preorder Sequence in Binary Search Tree:做法是把preorder的变成inorder,利用一个stack,观察一下preorder的大小顺序就可以了
  13. Peeking Iterator:首先要记录两个值,cur和prev,hasnext和peek都是操作cur,当获取next的值的时候,先把next值赋值给prev
  14. Inorder Successor in BST:用递归方法很好做
    300. Longest Increasing Subsequence:难点在于follow up的log n 解法
  15. Best Time to Buy and Sell Stock with Cooldown:主要是要找buy和sell之间的关系
  16. Generalized Abbreviation:这道题比较麻烦,一直不太会写,现在再写一遍,等到复习Google tag的时候再复习一遍
  17. Wiggle Sort II:这题主要要把大的放一边把小的放一边中间值放中间,然后再进行排序就好了
  18. Reconstruct Itinerary:沿着一条路径一直朝下访问,直到无法访问,无法访问时候就从stack pop出来放到res里去
  19. Water and Jug Problem:这题是一道数学题
  20. Sum of Two Integers: 利用and和xor的操作
  21. Super Pow:数学题
  22. Combination Sum IV:背包问题
  23. Kth Smallest Element in a Sorted Matrix:二分法,判定条件为数数
  24. Insert Delete GetRandom O(1):利用一个array和一个hash,每次和array的最后一个值进行交换并且更新hash值
  25. Mini Parser:每次遇到一个【就加入一个nestedinteger
  26. Lexicographical Numbers:这道题有点看记忆力,大概思路是有的,不知道能不能写出bug free来
  27. Elimination Game:这道题连一个tag都没有,其实就是记录一个开头值
  28. Convert a Number to Hexadecimal:进制的转换
  29. Sentence Screen Fitting:这题有点坑,不太会做
  30. Maximum XOR of Two Numbers in an Array: 从最高位开始,每次res移一位的时候,都测试一下res | 1 是不是可能的答案
  31. Find Right Interval:二分法
  32. Ternary Expression Parser:从后往前做用stack依次做
  33. Sequence Reconstruction:拓扑排序的问题
  34. Minimum Moves to Equal Array Elements:数学题
  35. 132 Pattern:用stack维护一个start递减的range
  36. Can I Win:博弈类问题
  37. Unique Substrings in Wraparound String:以每一个字母ending的最大长度
  38. Ones and Zeroes:背包类问题
  39. Target Sum:又是一道背包类问题
  40. The Maze II:用heap维护一系列访问过的点,按照距离排序,先访问heap里最小的点,并且试着更新visited里的长度
  41. Longest Palindromic Subsequence:dp问题,对角线型dp
  42. Continuous Subarray Sum:要形成k的倍数,也就是要在dict里重复prefixsum % k
  43. Lonely Pixel II: 好晦涩的题目
  44. Split Array with Equal Sum:i,j,k固定一下j
  45. Optimal Division:数学题,或者是记忆化搜索
  46. Split Concatenated Strings:非Google题,不做了
  47. Add Bold Tag in String:遇到两组字符串的情况,某一组特别大,那么就考虑loop另一组
  48. Task Scheduler:用heap来依次做, 每次都把heap里的要用的元素pop出来放到一个temp里,然后再放回到heap里
  49. Exclusive Time of Functions:只要记录当前的任务id和prev的时间,剩下的就一点一点来判断
  50. Shopping Offers:记忆化搜索,先记录without special的,然后再试着如果加入special的各种情况
  51. 4 Keys Keyboard:寻求前面三个值的情况,也就是说如果用了j step到dp[j],那么剩余i-j步,然后C-A,C,V,V,V,可以获得i-j-2个copy,然后加上本身的copy,也就是i-j-1个copy
  52. Split Array into Consecutive Subsequences:有点greedy的方法
  53. Beautiful Arrangement II:感觉更像是一道数学题
  54. Bulb Switcher II:又是一道数学题。。。
  55. Partition to K Equal Sum Subsets:backtracking的题目,一个一个数找

推荐阅读更多精彩内容