美文网首页数据结构与算法
数据结构第二季 Day17 大数乘法、动态规划开篇

数据结构第二季 Day17 大数乘法、动态规划开篇

作者: 望穿秋水小作坊 | 来源:发表于2021-10-25 16:21 被阅读0次

一、大数乘法

1、大数乘法,为什么需要用字符串存储?

  • 因为很大的数据很容易发生溢出问题,所以要用字符串进行存储。

2、简述大数乘法的核心思想?

image.png image.png

3、上述大数乘法还可以进行优化吗?

image.png
  • 后续有空,自己动手计算下时间复杂度的变化,才能体会到优化的思想精髓
  • 其实优化也是采取分支的思想
  • 将 4T(n/2) 降低到了 3T(n/2)

二、动态规划开篇

1、动态规划英文名称是什么?动态规划是解决什么问题的常用策略?

  • 动态规划(Dynamic Programming),简称 DP。
  • 是求解最优化问题的一种常用策略。
  • 一般带有 “最” 字的问题,都可以尝试用动态规划来解决。
image.png

2、动态规划的通常使用套路是什么(新手三步曲)?

  • ①暴力递归(自顶向下,会出现重复子问题)
  • ②记忆化搜索(自顶向下)
  • ③递推(自底向上)
image.png

3、使用动态规划的思想,来解决零钱兑换的问题?(结合例子理解动态规划)

image.png

4、按照上面的核心思路,如何进行代码实现?

  • 太强了,五行代码就解决了。暴力递归的代码真的很精简啊~~~
  • 暴力递归是自顶而下的思维方式
image.png

5、暴力虽美,但是效率很低。上述代码存在什么问题?

  • 一个函数里面,调用了四个子函数(是否想起斐波那契数列的恐怖递归😱)
  • 比如计算 coins(4) ,每次都需要重复计算 coins(3)、coins(2)、coins(1),这样的重复大量存在,损耗性能
  • 思考如何解决重复计算的问题呢?

6、接下来我们对暴力递归进行优化,使用记忆搜索法(依然自顶向下的调用)

image.png

7、为什么我们会觉得上面的算法可以使用递推(自底向上)优化?

  • 因为我们分析上述代码计算过程,发现都是先计算出小值的最优解,然后再计算n的最优解。
  • 那么我们有理由相信是可以从小的值开始迭代,计算出大的值。
image.png

8、上述代码时间复杂度,空间复杂度都是多少?

image.png

9、如果要求出具体选的哪几枚硬币要怎么办?

image.png

10、 如果硬币组合和零钱数都是可变的,凑不齐返回-1,如何设计代码?(通用的实现)

  • 先思考外部如何调用,再思考内部如何实现
image.png

相关文章

  • 数据结构第二季 Day17 大数乘法、动态规划开篇

    一、大数乘法 1、大数乘法,为什么需要用字符串存储? 因为很大的数据很容易发生溢出问题,所以要用字符串进行存储。 ...

  • 动态规划-js

    动态规划 参考:算法分析与设计-贪心&动归 漫画:什么是动态规划? 【数据结构与算法】 DP 动态规划 介绍 介绍...

  • 大数求和

    大数求和 大数乘法

  • 大数乘法(Multiply Strings)

    大数乘法的算法 大数乘法的关键在于如何用字符串来模拟大数乘法。方法有如下几种:模拟普通的手算乘法、利用代数方法优化...

  • 大数

    大数乘法

  • 大数乘法

    大数乘法:

  • 树形动规

    顾名思义, 树形动态规划就是在“树”的数据结构上的动态规划. 在树上面做动态规划是很常见的, 因为树上的一些问题是...

  • 大数乘法

    其实大数乘法就是在考虑大数加法的进位的同时,考虑字符串num1和字符串num2相乘时,每一位所在的位置,以及加法运...

  • 大数乘法

    后期需要实现分治算法,降低复杂度 测试代码 输出结果: 12345678998765 * 1234567 = 01...

  • 大数乘法

    普通大数乘法 普通大数乘法模拟两个数字竖式相乘,为了方便操作,数字的个位在数组的第0位,时间复杂度为O ( n² ...

网友评论

    本文标题:数据结构第二季 Day17 大数乘法、动态规划开篇

    本文链接:https://www.haomeiwen.com/subject/jbjjaltx.html