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次没有持有的状态下找最大值

相关推荐
2601_950760791 小时前
BCMA:急性髓系白血病免疫治疗的新型可行靶点
人工智能·算法·蛋白
Reart1 小时前
Leetcode 123.买卖股票的最佳时期3(内有随心谈,718)
后端·算法
只与明月听2 小时前
LangChain 学习-掌握LangChain Core API
前端·人工智能·后端
可编程芯片开发2 小时前
基于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