ARTS (第36周)
归纳和总结。
Algorithm 算法
买卖股票的最佳时机
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
leetcode 121
1 | 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 |
解法1 暴力搜索
1 | // 执行用时:545 ms,在所有java提交中击败了5.01%的用户 |
解法2 动态规划
1 | // 执行用时:3 ms,在所有java提交中击败了46.26%的用户 |
Review 英文文章
https://spring.io/guides/gs/accessing-data-mongodb/
使用mongodb
Tip 技巧
现代计算机的组成
冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从EDVAC到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。
根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
把需要的程序和数据送至计算机中。
必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,包括:
1:输入数据和程序的输入设备;
2:记忆程序和数据的存储器;
3:完成数据加工处理的运算器;
4:控制程序执行的控制器;
5:输出处理结果的输出设备。
Share 分享
https://www.jianshu.com/p/c32ce5678c50 教,才是最好的学!
状态机的思路
关键就在于列举出所有可能的「状态」,然后想想怎么穷举更新这些「状态」。一般用一个多维 dp 数组储存这些状态,从 base case 开始向后推进,推进到最后的状态,就是我们想要的答案。想想这个过程,你是不是有点理解「动态规划」这个名词的意义了呢?
具体到股票买卖问题,我们发现了三个状态,使用了一个三维数组,无非还是穷举 + 更新,不过我们可以说的高大上一点,这叫「三维 DP」,怕不怕?这个大实话一说,立刻显得你高人一等,名利双收有没有。
所以,大家不要被各种高大上的名词吓到,再多的困难问题,奇技淫巧,也不过是基本套路的不断升级组合产生的。只要把住算法的底层原理,即可举一反三,逐个击破。
作者:labuladong
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/yi-ge-fang-fa-tuan-mie-6-dao-gu-piao-wen-ti-by-l-3/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。