BFS
树形
-
【102】二叉树的层次遍历:标准bfs
-
【103】二叉树的锯齿形层序遍历:一层层从左到右再从右到左
-
【199】二叉树的右视图:bfs+取每一层最右边的
-
【662】二叉树最大宽度:bfs同时更新节点序号
每一层更新 ans = max(ans,qu[len(qu)-1].Val - qu[0].Val + 1)
一维
-
【46】全排列
-
【207】课程表:拓扑排序,同【210】课程表 II
二维空间
- 【200】岛屿的数量:每次dfs删除一片连续的岛屿
- 【79】单词搜索
- 【417】太平洋大西洋水流问题:两次bfs,取交集
- 【542】01 矩阵:从所有0的位置bfs开始搜索
- 【offer 13】机器人的运动范围
贪心
- 【45】跳跃游戏 II:每次选择跳向可以到达最远范围的点、【55】跳跃游戏
- 【53】最大子数组和:从前向后求和,前面为负数就舍弃,更新最大值
- 【56】区间合并:开始时间排序,左区间记录开始位置,从左向右枚举,不重叠就记录答案,更新左区间
- 【121】买卖股票的最佳时机I:遍历每一天,记录之前的最小值,判断今天卖是不是更好
- 【122】买卖股票的最佳时机 II:枚举每一天,如果比前一天贵,就前一天买,就今天卖
- 【134】加油站:骑行一周剩余油量不为负就可以完成,开始位置为油量最低的位置
- 【135】分发糖果:每人最少糖果数=从他向左右递减数的个数+1,所有人最少=全局最少
- 【253】会议室 II:开始时间排序,一个个安排,不够就新建一个会议室
- 【316】去除重复字母:从前向后枚举,放入栈里,如果当前字母小于栈顶元素,且栈顶元素不是最后一个,就出栈,当前字母进栈。
- 【406】根据身高重建队列:从矮到高或者从高到矮
- 【621】任务调度器:优先安排剩余最多的任务
- 【670】最大交换:选取最大的最后一个数字,和第一个比他小的数字交换