121 股票买卖问题(easy)
这道题拿到手上,可能是之前写同类的dp问题太多了,想都没想上去一个dp,写着写着发现这好像是个类似于贪心的有巧妙方法的题目,于是又重新想了一下,这次还是按照dp的思路,数列递推就完事了,一共就n种情况嘛(n=prices.size()),分别是在第1,2,3…n天卖出股票,这么一想,那找最大值问题,就看(i)天卖出和(i+1)卖出的关系就行。显然我们能分别找到各天卖出的最大值,得到的结果就是最大值,最好是能从前一天卖出的最大值推出今天卖出的最大值,这是经典的设计思路,递推,递归的设计思路也大差不差我感觉。既然这道题是无序数组,那么至少也得遍历一遍吧,时间复杂度最小也就是O(n)了。要求第i天的最大值(这里i全部当下标了),那就是prices[i]-min(prices[0…i]),显然找min是关键,我们前面说了要从前一天推得是最好,不然还得遍历增加复杂度太麻烦了,那就是类似于在线更新的思想了,每次往后推一天,我们都更新一下minp值就好啦,那就是minp=min(prices[i],minp),base case么就是第一天min=prices[0],这道题没有难点了,说是easy题,但是很容易想复杂了,所以有的时候要好好看题。
dp 股票买卖问题系列
最新推荐文章于 2023-06-29 16:46:44 发布