Leetcode 188.买卖股票的最佳时机4(718)

题目

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

Go 复制代码
func maxProfit(k int, prices []int) int {
   dp:=make([][]int,len(prices)+1)
   n:=k*2
   for i,_ := range dp{
    dp[i]=make([]int,n)
   }
   for k:=0;k<n;k++{
        if k%2==1{
            dp[0][k]=0
        }else{
            dp[0][k]=-prices[0]
        }
   }
   for i:=1;i<=len(prices);i++{
    for k:=0;k<n;k++{
        if k%2==0{
            if k==0{
                dp[i][k]=max(-prices[i-1],dp[i-1][k])
            }else{
                dp[i][k]=max(dp[i-1][k-1]-prices[i-1],dp[i-1][k])
            }
        }else{
            dp[i][k]=max(dp[i-1][k-1]+prices[i-1],dp[i-1][k])
        } 
        }
   }
   res:=0
     for i:=0;2*i<n;i++{
        res=max(res,dp[len(prices)][i*2+1])
     }
     return res
}

思路

上一道题,股票3是只能买两次,现在换成了只能买k次,其实还是具体的次数,但是换成了一个代数,所以我们要找的就是一个规律性一个总结的做法

那么其实在上一道题Leetcode 123.买卖股票3中,就发现奇数偶数的递推表达式是有一定规律的,当然要取决于状态的具体对应数字,这道题就用到了。当奇数时怎么样,偶数时递推公式又是怎么样的。

最后算结果时,是要在n次没有持有的状态下找最大值

相关推荐
小码哥_常3 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
学长毕设6 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
UIU1148 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
努力的小雨9 小时前
给 AI 眼镜开发应用有多难?我从零做了一个陪练,还上架了
后端
论文复现现场9 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi9 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David10 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
excel10 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
AI入职记11 小时前
AI 代码审查召回率实测:20 个骗过单元测试的变异体,抓到 13 个
后端
浮链序11 小时前
别让 AI 客服把用户当猴耍:百来行 Python 把「转人工」做成一条高可用链路
后端