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

相关推荐
只与明月听1 小时前
LangChain 学习-掌握LangChain Core API
前端·人工智能·后端
可编程芯片开发1 小时前
基于RMDCFT算法的天基雷达空间机动目标检测方法MATLAB仿真,对比FRFT和DFT算法
算法
无相求码2 小时前
数组越界为什么有时候不崩溃?VS2013 下栈上变量的幽灵布局解密
c语言·后端
noipp2 小时前
推荐题目:洛谷 B2099 矩阵交换行
线性代数·算法·矩阵
HONG````3 小时前
HarmonyOS ArkUI Image 组件完全指南:objectFit、占位图与加载回调
后端
一路向北North3 小时前
Spring Security OAuth2.0(25):分布式系统授权-拓展用户信息
java·后端·spring
五条凪4 小时前
简单理解 BM25 与 TF-IDF
人工智能·算法·搜索引擎·全文检索·tf-idf
行者全栈架构师4 小时前
【码动四季】Spring Boot 可观测性体系:Micrometer + OpenTelemetry + Grafana 全链路搭建
java·算法·架构
TCW11214 小时前
AI底层系列:用C++实现线性代数的公式推导与算法设计-8.线性变化(3)
c++·人工智能·算法