121.买卖股票的最佳时机
虽然这道题是道简单题,但是给我造成的困难也很大。。主要是我没有转过弯来,脑袋里还是没有那个思想。
其实就是先设置max,min,当当前的数比min还小时,就更新min,然后每次循环里都要比较max和price[i]-min的大小,更新max的值,最后的max就是结果,只需要一次遍历就行了。
然后这道题其实包含了动态规划的思想,我一开始做时就知道,但是就是找不到状态转移方程,完全下不了手。就是这样的,如果是动态规划来做的话,那么今天的选择有两种,要么什么都不做,要么卖出去,这时候就要比较到底哪种好,什么都不做的话那么今天的结果就是今天之前的最大收益,今天卖的话就是今天的价格减去前些天购买进来的最低价格,然后进行比较,一直到最后一天,则那天的受益就是最大收益,也就是我们要保证每天的收益都要是最大收益,那么最后一天的显然也是最大收益。
首先是不通过dp的做法,代码如下:
然后是动态规划的dp做法: