Leetcode 123.买卖股票的最佳时期3(内有随心谈,718)

题目

26年7月18日(首刷看解)

Go 复制代码
func maxProfit(prices []int) int {
    //dp[n][j]表示在第n天,持有状态为j的情况相爱,可以获取的最大利润
    //关键是这个两次要怎么实现?计数器?在哪里计数呢? 
   dp:=make([][]int,len(prices)+1)
   for i,_ := range dp{
    dp[i]=make([]int,4)
   }
   dp[0][0]=-prices[0] //第一次持有
   dp[0][1]=0   //第一次没持有
   dp[0][2]=-prices[0]  //第二次持有
    dp[0][3]=0    //第二次没持有 
   for i:=1;i<=len(prices);i++{
        dp[i][0]=max(-prices[i-1],dp[i-1][0])
        dp[i][1]=max(dp[i-1][0]+prices[i-1],dp[i-1][1])
        dp[i][2]=max(dp[i-1][1]-prices[i-1],dp[i-1][2])
        dp[i][3]=max(dp[i-1][2]+prices[i-1],dp[i-1][3])
   }
   return max(dp[len(prices)][1],dp[len(prices)][3])
}

思路

只能买两次,一开始我的思考就是这个两次要怎么实现?计数器?在哪里计数呢?,之前要么是只买一次,要么是可以一直买卖,**这一次给具体的次数 *尝试解答无果,后看题解后独立自解

它的核心思路,就是看固定两次,其实总状态只有固定那么几种,就是第一次持有,第一次没持有(第一次持有后卖出),第二次持有,第二次每持有,这里是偶数次代表持有,奇数次代表每持有

四种状态对应四种递推公式,其实是两种

然后注意最后还是没持有的状态下钱最多!

然后初始化,这里第二次持有,就会想初始化为多少才是对的,这里建议列一两个数字,来模拟递推,看看到底初始化多少才是对的。

随心谈

最近,我也是看了关于卢本伟时隔10年的采访视频 ,没错就是那个卢本伟,讲述了一些卢本伟一个主播当时的一个内心想法,和在被禁播后的一个生活重新开始的变化,谈到了一个关于就是游戏行业做一款游戏,主持人会问他,有没有一些比如就是现在的市场游戏很难做出来的一些现实层面的考量 ,卢本伟说没有,就是想做这件事。

从一个内心的想法出发,我觉得或许这也是我要追求的,无论以后我是在做app,做视频,做游戏,甚至各种和互联网相关的都行,我总能发现其中的乐趣,不要太被外在环境束缚 ,有时候世俗赚钱,没有想象中的那么重要 ,不要以在赚钱为目的,而是把钱当做你一个追寻梦想,追寻想做的事情上的一个附带奖励,我觉得这才是我的追求,因此我必须否定我之前的焦虑关于能不能找到工作的状态了,其实本身的喜欢才是最重要的,其他的东西尽量的不要把优先级拉满,否则真的会失去本心,找不到方向的。我觉得太想赚钱,比赚不到钱但是没失去纯粹 更严重,也更不应该。无论何时,如果做着自己不喜欢的事,不能做自己喜欢的事才是最痛苦的,不要忽视更为重要的东西

相关推荐
考虑考虑2 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长2 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
云浪3 小时前
Go源码分析:搞懂 Go 是如何实现堆的
后端·go·源码阅读
Nil2084 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
调试人生的显微镜6 小时前
iOS开发入门:Interface Builder、基础控件及UITextField详解
后端·ios
泡海椒6 小时前
巡检照片与工单附件:jquick-pdf 图片嵌入的业务实战
后端
蜗牛互联网6 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
AI持续学习6 小时前
文档权限变更如何回归测试?账号、空间、文件和分享链接用例清单
后端
wanderist.6 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.6 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode