算法-题解总结

  1. 剪绳子最大
   把绳子大小分为3,以及总长度余3的大小(具体看题意)
  1. 滑动窗口
什么是滑动窗口?

其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!

如何移动?

我们只要把队列的左边的元素移出就行了,直到满足题目要求!

一直维持这样的队列,找出队列出现最长的长度时候,求出解!

时间复杂度:O(n)
  1. 回溯
遍历,递归(注意出口条件),可以轻易写出完整的回溯算法。

根据回溯法框架解题
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return

for 选择 in 选择列表:
    做选择
    backtrack(路径, 选择列表)
    撤销选择
  1. 动态规划
找出之间的关系,理清局部与整体的关系,
(1)状态
	理解状态的定义的由来、会列出状态转移方程;
「状态转移方程」是原始问题的不同规模的子问题的联系。即大问题的最优解如何由小问题的最优解得到。
(2)思考状态转移方程
   归纳「状态转移方程」是一个很灵活的事情,通常是具体问题具体分析;
   「动态规划」方法依然是「空间换时间」思想的体现,常见的解决问题的过程很像在「填表」
  (3)思考初始化
  初始化是非常重要的,一步错,步步错。初始化状态一定要设置对,才可能得到正确的结果。
  (4)思考输出
  可能最后一个状态,也可能是综合之前所有计算过的状态。
(5)思考优化空间

  1. 贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,
总是做出在当前看来是最好的选择。也就是说,
不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
通过局部最优解得到全局最优解。
...
  1. 双指针
快慢指针,链表操作...
  1. 搜索
BFS
DFS
回溯

持续更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值