【leetcode】BFS、贪心高频题目整理

234 阅读2分钟

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】最大交换:选取最大的最后一个数字,和第一个比他小的数字交换