常见算法

数据结构

  • 算法有时就是选择合适的数据结构
  • 算法中常用数据结构:散列表,队列,栈,集

常见算法

  • 迭代
  • 递归
  • 动态规划
  • 贪心算法
  • 回溯算法:迷宫找路
  • 搜索算法:深度、广度
  • 排序算法
  • 分治法:具有代表的二分法
  • 穷举法

递归

  • 基例条件(递归结束的条件),递归链条
  • 递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想离不开递归),解决更具体问题的两类算法思想;贪心算法是动态规划算法的一个子集,可以更高效解决一部分更特殊的问题。
  • 递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义了最简子问题的答案。递归代码的精髓在于调用自己去解决规模更小的子问题,直到到达结束条件

分而治之

归并排序把待排序数组不断二分为规模更小的子问题处理,这就是 “分而治之” 这个词的由来。显然,排序问题分解出的子问题是不重复的,如果有的问题分解后的子问题有重复的(重叠子问题性质),那么就交给动态规划算法去解决

搜索算法

  • 广度优先,最短路径
  • 深度优先

贪婪算法

  • 局部最优,全局最优

算法思考方向

自下而上,还是自上而下

  • 正向:从问题出发。
  • 反向:从结果出发。

算法记忆口诀

分心去搜索,排序好的迭代、递归和动态规划,需要使用回溯的枚举。

回溯

一般使用数组,并且不能改变入参的值

备忘录

避免重复计算,缓存计算过的值,使用数组,二维数组,散列表进行缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值