dp 股票买卖问题系列

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题,但是很容易想复杂了,所以有的时候要好好看题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值