【系列】leetcode笔记

慢慢来

第一步:热门简单题

地址:热门题目&简单题 23道

DAY 1 (2020年10月22日)

  1. 【1】两数之和——字典查找
  2. 【20】有效的括号——栈
  3. 【21】合并两个有序链表——递归
  4. 【53】最大子序和——动态规划
  5. 【70】爬楼梯——递归

DAY 2 (2020年10月26日)

  1. 【101】对称二叉树——递归
  2. 【104】二叉树的最大深度——递归
  3. 【121】买卖股票的最佳时机——遍历
  4. 【136】只出现一次的数字——“异或”
  5. 【141】环形链表——快慢指针
  6. 【155】最小栈——辅助栈
  7. 【169】多数元素——投票法

DAY 3 (2020年11月02日)

  1. 【198】打家劫舍——动态规划
  2. 【206】反转链表——链表
  3. 【226】翻转二叉树——二叉树
  4. 【234】回文链表——链表
  5. 【283】移动零

DAY 4 (2020年11月25日)

  1. 【448】找到消失的数字
  2. 【461】汉明距离
  3. 【543】二叉树直径
  4. 【617】合并二叉树

后面计划按照主题来做,顺便把之前学的复习一遍,尤其是各种排序

第二步:剑指offer

地址:剑指offer

DAY 4 (2020年11月25日)

  1. 剑指 Offer 03 数组中重复的数字
  2. 剑指 Offer 05. 替换空格
  3. 剑指 Offer 06. 从尾到头打印链表
  4. 剑指 Offer 09. 用两个栈实现队列
  5. 剑指 Offer 10 经典递归
  6. 剑指 Offer 11. 旋转数组的最小数字

DAY 5 (2020年11月26日)

  1. 剑指 Offer 15. 二进制中1的个数
  2. 剑指 Offer 18. 删除链表的节点
  3. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  4. 剑指 Offer 22. 链表中倒数第k个节点
  5. 剑指 Offer 24. 反转链表
  6. 剑指 Offer 25. 合并两个排序的链表
  7. 剑指 Offer 27. 二叉树的镜像
  8. 剑指 Offer 28. 对称的二叉树
  9. 剑指 Offer 29. 顺时针打印矩阵——递归
    • 第一步,p维矩阵
    • 第二步,m x n 维矩阵
  10. 剑指 Offer 30. 包含min函数的栈——栈
  11. 剑指 Offer 32 打印二叉树——迭代
    1. 从上到下、每一层从左到右
    2. 每一层打印到一行
    3. 之字形顺序打印二叉树
  12. 剑指 Offer 39. 出现次数超过一半的数字——字典
  13. 剑指 Offer 40. 最小的k个数——堆排序
  14. 剑指 Offer 42. 连续子数组的最大和——动态规划

DAY 6 (2020年11月29日)

  1. 剑指 Offer 50. 第一个只出现一次的字符
  2. 剑指 Offer 52. 两个链表的第一个公共节点
  3. 剑指 Offer 53 - I. 在排序数组中查找数字 I
  4. 剑指 Offer 53 - II. 0~n-1中缺失的数字
  5. 剑指 Offer 54. 二叉搜索树的第k大节点
    二叉搜索树的遍历问题:递归解法+迭代解法
  6. 剑指 Offer 55 - II. 平衡二叉树
  7. 剑指 Offer 56 数组中出现数字的次数
  8. 剑指 Offer 57. 和为某个数字
    1. 找出和为X的两个数字
    2. 找出所有和为s的连续正数序列
  9. 剑指 Offer 58 - I. 翻转单词顺序
  10. 剑指 Offer 58 - II. 左旋转字符串

DAY 7 (2020年12月01日)
这部分是剑指offer中等难度的,需要复习哟~

  1. 剑指 Offer 59. 滑动窗口的最大值——队列维护最大值的index
  2. 剑指 Offer 61. 扑克牌中的顺子
  3. 剑指 Offer 62. 圆圈中最后剩下的数字——队列
  4. 剑指 Offer 63. 股票的最大利润
  5. 剑指 Offer 68 - 二叉树的最近公共祖先——递归
  6. 剑指 Offer 04. 二维数组中的查找——查找
    1. 逐行二分法,其实效率也还不错
    2. 转化为图问题
  7. 剑指 Offer 07. 重建二叉树——递归
  8. 剑指 Offer 12. 矩阵中的路径——图DFS问题

————————————————————————
算法

  • 基础技巧:分治、二分、贪心
  • 排序算法:快速排序、归并排序、计数排序
  • 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
  • 图论:最短路径、最小生成树
  • 动态规划:背包问题、最长子序列

数据结构

  • 数组与链表:单 / 双向链表
  • 栈与队列
  • 哈希表
  • 堆:最大堆 / 最小堆
  • 树与图:最近公共祖先、并查集
  • 字符串:前缀树(字典树) / 后缀树

补充

  • 用 Rand7() 实现 Rand10()