【贪心算法】【二分查找】【双指针】【二叉树】【深度优先】【广度优先】【动态规划】

贪心算法

455. 分发饼干优先给胃口最小的孩子分配小饼干
135. 分发糖果不需要排序,从左到右,从右到左各遍历一遍

二分查找

69.Sqrt(x)牛顿迭代法
34. 在排序数组中查找元素的第一个和最后一个位置使用二分法实现c++中的lower_bound(返回有序数组中第一个>=target的元素)和upper_bound函数(返回有序数组中第一个>target的元素),如果不存在时均返回end

双指针

167. 两数之和 II - 输入有序数组反向双指针,注意下标从1开始
88. 合并两个有序数组三个指针
142. 环形链表 II快慢指针相遇位置到入环节点的距离 == 头结点到入环节点的距离
633. 平方数之和注意测试用例中输入数值较大,需要使用unsigned int类型
76. 最小覆盖子串使用数组表示字符串中字符的数量,使用bool字符数组表示是否存在该字符(题目比较绕)
680. 验证回文字符串 Ⅱ题目中强调仅删除1个字符,所以可以通过回文字符串判断子函数来实现
3. 无重复字符的最长子串经典的滑动窗口题目
154. 寻找旋转排序数组中的最小值 II解法简单,思路不容易想到
540. 有序数组中的单一元素同向双指针,需要注意数组中仅有一个元素和仅剩最后一个元素的情况
4. 寻找两个正序数组的中位数创建一个新的all数组,将两个数组合并为一个新的数组后,判断奇偶,注意奇偶判断并返回的简化过程并不是直接写出来的,而是复杂版的优化

二叉树

  • 满二叉树与完全二叉树
  • 二叉搜索树
  • 平衡二叉树(AVL树),空树或者左右两个子树的高度差不超过1,并且左右两个子树也是平衡二叉树
  • 二叉树存储方式
144. 二叉树的前序遍历递归+统一迭代法(stack)
94. 二叉树的中序遍历递归+统一迭代法(stack)
145. 二叉树的后序遍历递归+统一迭代法(stack)
102. 二叉树的层序遍历层序遍历的根基(queue)
107. 二叉树的层序遍历 II层序遍历后的结果翻转一下
199. 二叉树的右视图层序遍历每一层时仅将每层的最后一个元素保留
637. 二叉树的层平均值将每层数据加起来,然后求平均
429. N 叉树的层序遍历每层子节点不再是仅存在左右子节点,而是需要for循环遍历所有子节点
515. 在每个树行中找最大值遍历每行数组时,进行比较,仅保留当前行的最大值
116. 填充每个节点的下一个右侧节点指针创建prenode和node两个节点
117. 填充每个节点的下一个右侧节点指针 II与上题一样
450. 删除二叉搜索树中的节点
530. 二叉搜索树的最小绝对差将二叉树遍历问题转化为中序遍历后有序数组中查找相邻元素绝对值最小值的问题
  • 二叉搜索树是有序的,在二叉搜索树上求最值,差值问题都可以通过中序遍历转化为在有序数组中求最值,差值的问题

深度优先遍历

695. 岛屿的最大面积递归实现深度优先搜索
417. 太平洋大西洋水流问题从边界向中间,使用深度优先搜索
剑指 Offer II 116. 朋友圈外层遍历行,dfs遍历列
463. 岛屿的周长岛屿的周长 = 岛屿到水域的步数 + 岛屿到边界的步数

广度优先遍历

1263. 推箱子1.遍历查找人和箱子的位置,记录并将其变为通行区域;2.从人位置出发进行广度优先遍历,需要注意遍历到箱子位置时,当且仅当箱子后方为通行区域时才是一条合法路径

动态规划

基础问题
509. 斐波那契数
70. 爬楼梯
746. 使用最小花费爬楼梯
62. 不同路径
63. 不同路径 II
343. 整数拆分
96. 不同的二叉搜索树
01背包问题
416. 分割等和子集等和子集转化为01背包
1049. 最后一块石头的重量 II最后剩余石头质量最小 == 将石头尽可能分成相等的两堆 == 背包为sum/2的大小,找最接近背包容量的石头重量和
494. 目标和将所有数字分成两项,左侧和右侧,left = (sum + target) / 2,求有多少种=left的组合,动态规划求组合通用dp[i] += dp[i-nums[i]]
474. 一和零背包有两个限制:0的最大个数限制和1的最大个数限制,元素有两个信息:0的个数和1的个数
完全背包
518. 零钱兑换 II先物品,后容量,求组合;先容量,后物品,求排列
377. 组合总和 Ⅳ求排列问题,结果要符合32位整数范围
多重背包
打家劫舍
股票问题
子序列问题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值