C++ 数据结构和算法

算法优化的本质:去冗余

C++ / C 程序设计书单

--1、  http://zh.lucida.me/blog/developer-reading-list/  《程序员必读书单 1.0》

    http://zh.lucida.me/blog/on-learning-algorithms/ 《我的算法学习之路》

--2、《Cracking the coding interview》

http://hawstein.com/archive/    (主)

https://blog.csdn.net/hzy925/article/details/77683261

https://blog.csdn.net/wangbaochu/article/details/52976729

https://www.cnblogs.com/weixliu/p/3311774.html

--3、https://leetcode-cn.com/problemset/all/    LeetCode

---------------------------------------------------------------------------------------------------------------------------

1、迭代
2、递归
递归和迭代:两者都能很好的完成计算任务,不同之处在于思维方式上,从而导致不同的计算方法:迭代是正向思维,从头到尾思考问题;递归是逆向思维,他假设我们已经得到了部分结果(假设我已经知道了1到99的累加值,把这个值加上100我们就得到了1到100的累加值了),从尾部追溯到头部,从而让问题简化。
例子:计算从1+2+3+ ... + 99 + 100 = ?


3、分治:包含递归调用,数列中求最大最小数: https://blog.csdn.net/jeffleo/article/details/53447463

4、回溯:回溯法说白了就是穷举法。回溯法一般用递归来解决,走不通就退回再走的技术为回溯法。

5、贪心:不断贪心的选取当前最优策略的计算方法。

6、动态规划:
(1)、自顶向下的备忘录方式的动态规划方法,使用了递归,递归的时候会产生额外的开销,使用自底向上的动态规划方法要比备忘录方法好。 
(2)、自底向上的动态规划;

https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247484350&idx=1&sn=fc88aa125f5a5269575b4c4d83774f41&chksm=fa0e6c3fcd79e5297257a05b8c75898b4059b1193956c702ff5ef3f2d8d46432bb7484bf6428&token=110841213&lang=zh_CN#rd

「动态规划」中包含三个重要的概念:

  • 【最优子结构】
  • 【边界】
  • 【状态转移公式】

   动态规划和分治的区别: 区别在于这些子问题会有重叠,一个子问题在求解后,可能会再次求解,于是我们想到将这些子问题的解存储起来,当下次再次求解这个子问题时,直接拿过来就是。

 1 int f(int n) {
 2    if (n == 1) return 1;
 3    if (n == 2) return 2;
 4    // a 保存倒数第二个子状态数据,b 保存倒数第一个子状态数据, temp 保存当前状态的数据
 5    int a = 1, b = 2;
 6    int temp = a + b;
 7    for (int i = 3; i <= n; i++) {
 8        temp = a + b;
 9        a = b;
10        b = temp; 
11    }
12    return temp; 
13 }

7、分支定界:

8、智能指针、 hashtable、 二叉树、

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值