算法基本讲解与例题

目录

1. 贪心算法

2.递归

2.动态规划


1. 贪心算法

贪心算法是:经过每步得到的局部最优解,从而去得到全局最优解。

力扣官方解释:

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择,就能得到问题的答案。贪心算法需要充分挖掘题目中条件,没有固定的模式,解决有贪心算法需要一定的直觉和经验。

贪心算法不是对所有问题都能得到整体最优解。能使用贪心算法解决的问题具有「贪心选择性质」。「贪心选择性质」严格意义上需要数学证明。能使用贪心算法解决的问题必须具备「无后效性」,即某个状态以前的过程不会影响以后的状态,只与当前状态有关

1.1 例题​​

  1. (118条消息) 力扣122:买卖股票的最佳时间(贪心)_weixin_44857576的博客-CSDN博客

2.递归

 递归就是 自己调用自己,枚举所有情况,然后从中选取最优解。递归本质就是 暴力解。

 那么递归如何优化?  通过动态规划。

  因为 动态规划 基本都可以由 递归式子转化而来。

递归 三部曲:

  1. 选择递归函数的参数  ---- 可以变化的量
  2. 终止条件 --- 递归结束的标志
  3. 递归方向 --- 自顶向下 / 自底向上 

2.动态规划

动态规划是:将一个大规模的问题转化为小规模问题,接着利用缓存存储中间结果,最后得到最终结果。

动态规划难点:

        1. 如何找到转化过程?即状态转移方程

         2. 中间结果如何保存?

        3. 小规模问题是什么样子的?

动态规划解题思路:

        大规模       <------   式子   -------> 小规模(得先知道)

  • basecase(初始化)<----> 小规模问题(要知道)-----> 递归的结束条件
  • 状态转移方程  <-----> 递归式子
  • 缓存中间结果    ----> 一般利用一维数组
  • 顺序问题    -----> 是从 0->n-1 还是 从 n-1 --> 0 ?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值