Leetcode 100题精讲

排序算法

  • 插入排序
  • 冒泡排序
  • 快速排序
  • 堆排序
  • 计数排序
  • 桶排序

动态规划

  • 爬楼梯(LeetCode 70)
  • 零钱兑换(LeetCode 322)
  • 买卖股票的最佳时机(LeetCode 121)
  • 买卖股票的最佳时机II(LeetCode 122)
  • 最长上升子序列(LeetCode 300)
  • 不同路径(LeetCode 62)
  • 最小路径和(LeetCode 64)
  • 打家劫舍(LeetCode 198)
  • 打家劫舍II(LeetCode 213)
  • 零钱兑换II(LeetCode 518)
  • 完全背包问题(LeetCode 322 类似思路)

回溯算法

  • N皇后(LeetCode 51)
  • 子集(LeetCode 78)
  • 全排列(LeetCode 46)
  • 组合(LeetCode 77)
  • 电话号码的字母组合(LeetCode 17)
  • 单词搜索(LeetCode 79)
  • 组合总和(LeetCode 39)
  • 组合总和II(LeetCode 40)

贪心算法

  • 分发饼干(LeetCode 455)
  • 柠檬水找零(LeetCode 860)
  • 最大子序和(LeetCode 53)
  • 买卖股票的最佳时机(LeetCode 121,可贪心思路)
  • 跳跃游戏(LeetCode 55)
  • 加油站(LeetCode 134)
  • 种花问题(LeetCode 605)

位运算

  • 只出现一次的数字(LeetCode 136)
  • 只出现一次的数字II(LeetCode 137)
  • 只出现一次的数字III(LeetCode 260)
  • 汉明距离(LeetCode 461)
  • 丢失的数字(LeetCode 268)

数学题

  • Pow(x, n)(LeetCode 50)
  • 字符串相乘(LeetCode 43)
  • 寻找两个正序数组的中位数(LeetCode 4)
  • 整数反转(LeetCode 7)
  • 最大公约数(LeetCode 1071)

二分查找

二分查找模板(重点)

  • 第一个错误的版本(LeetCode 278)
  • 搜索插入位置(LeetCode 35)
  • 寻找峰值(LeetCode 162)
  • 寻找两个正序数组的中位数(LeetCode 4,部分思路)

数组

  • 移动零(LeetCode 283)
  • 颜色分类(LeetCode 75)
  • 旋转有序数组中的搜索(LeetCode 33)
  • 合并两个有序数组(LeetCode 88)

链表

  • 链表的中间节点(LeetCode 876)
  • 排序链表(LeetCode 148)
  • 重排链表(LeetCode 143)
  • 反转链表(LeetCode 206)
  • 两两交换链表中的节点(LeetCode 24)
  • 合并K个升序链表(LeetCode 23)
  • 环形链表(LeetCode 141)
  • 环形链表II(LeetCode 142)
  • 删除排序链表中的重复元素(LeetCode 83)
  • 删除排序链表中的重复元素II(LeetCode 82)
  • 回文链表(LeetCode 234)
  • 相交链表(LeetCode 160)
  • 奇偶链表(LeetCode 328)
  • 删除链表元素(LeetCode 203)
  • 单链表的倒数第K个节点(LeetCode 19)

  • 有效的括号(LeetCode 20)
  • 最小栈(LeetCode 155)
  • 接雨水(LeetCode 42)
  • 直方图中的最大矩形(LeetCode 84)
  • 柱状图中最大的矩形(LeetCode 85)

队列

  • 滑动窗口最大值(LeetCode 239)
  • 最小窗口子串(LeetCode 76)
  • 实现队列的最大值(LeetCode 1456)
  • 设计循环双端队列(LeetCode 641)

双指针

  • 两数之和(LeetCode 167)
  • 三数之和(LeetCode 15)
  • 四数之和(LeetCode 18)
  • 移除元素(LeetCode 27)
  • 反转字符串(LeetCode 344)
  • 验证回文串(LeetCode 125)

哈希表

  • 两数之和(LeetCode 1)
  • 字母异位词分组(LeetCode 49)
  • 四数相加II(LeetCode 454)
  • 快乐数(LeetCode 202)
  • 赎金信(LeetCode 383)
  • 第一个只出现一次的字符(LeetCode 387)
  • 存在重复元素(LeetCode 217)
  • 存在重复元素II(LeetCode 219)
  • 两个数组的交集(LeetCode 349)
  • 两个数组的交集II(LeetCode 350)

前缀和

  • 最大子序和(LeetCode 53,前缀和思路也可用)
  • 和为K的子数组(LeetCode 560)
  • 寻找数组的中心下标(LeetCode 724)
  • 长度最小的子数组(LeetCode 209)

二叉树

  • 二叉树的前序遍历(LeetCode 144)
  • 二叉树的中序遍历(LeetCode 94)
  • 二叉树的后序遍历(LeetCode 145)
  • 最大二叉树(LeetCode 654)
  • 二叉树的层序遍历(LeetCode 102)
  • 二叉树的最小深度(LeetCode 111)
  • 二叉树的最大深度(LeetCode 104)
  • 二叉树的最近公共祖先(LeetCode 236)
  • 对称二叉树(LeetCode 101)
  • 翻转二叉树(LeetCode 226)
  • 从中序与后序遍历序列构造二叉树(LeetCode 106)
  • 从前序与中序遍历序列构造二叉树(LeetCode 105)