熟悉一些常用的算法编程题,在应对面试的时候,还是很有帮助的。通过分门别类,将 leetcode hot100 的题目进行梳理,能够加强个人的归纳总结能力,也能让自己在下次复习的时候能够快速的熟悉。
对于 leetcode 上常见的题目,可以大致分为以下几大块:数组、链表、哈希表、字符串、双指针法、栈与队列、二叉树、回溯算法、贪心算法、动态规划、单调栈、图。
数组
- easy
- 买卖股票的最佳时机 记录最低价格,更新最大diff
- 只出现一次的数字 亦或大法
- 多数元素 哈希法;排序法
- 移动零
- 找到所有数组中消失的数字 加数标记法
- medium
- 下一个排列 *
- 旋转图像 自外向内+旋转转移方程
- 区间合并 排序
- 岛屿数量 dfs
- 数组中的第K个最大元素 快排partion;小顶堆
- 除自身以外数组的乘积 把乘积拆成两部分 L[i-1] * R[i+1]
- 搜索二维矩阵II Z形走法
- hard
- 寻找两个正序数组的中位数 二分法
哈希表
链表
- easy
- medium
- 两数相加
- 删除链表的倒数第 N 个结点 快慢指针
- 链表排序 归并排序;合并两个有序链表 *
- 环形链表II 哈希法;快慢指针法
- hard
双指针法
- medium
- 无重复字符的最长子串 双指针滑窗法
- 盛最多水的容器 从两端开始往里收缩,高度取决于木桶短板
- 三数之和 排序+双指针,同时注意跳过重复值
- 颜色分类 用 [start, end) 表示区间。注意开闭关系
动态规划
- easy
- medium
回溯法
二分查找
- easy
- medium
- 搜索旋转排序数组 二分法
- 在排序数组中查找元素的第一个和最后一个位置 查两次
栈与队列
二叉树
- easy
- medium
- 验证二叉搜索树 中序遍历
- 二叉树的层序遍历 bfs
- 从前序与中序遍历序列构造二叉树 递归,数组划分
- 二叉树展开成链表 维护一个pre节点
- 二叉树的最近公共祖先 dfs 递归
图
- medium
- 课程表 拓扑排序 bfs / dfs
其他
- medium