动态规划算法-简单多状态dp问题:18.买卖股票的最佳时机Ⅳ

题目链接:188. 买卖股票的最佳时机 IV(困难)

算法原理:

解法:动态规划

跟上题 动态规划算法-简单多状态dp问题:17.买卖股票的最佳时机Ⅲ一样

Java代码:

java 复制代码
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-10-20
 * Time: 20:27
 */
class Solution {
    //188.买卖股票的最佳时机Ⅳ
    //听了吴小哲说的,上一题做完直接写着题,发现果然一遍过,代码一模一样
    public int maxProfit(int k, int[] prices) {
        int n=prices.length;
        k=Math.min(k,n/2);//这题不同于上题,有个优化:缩小k的规模
        int[][] f=new int[n][k+1];
        int[][] g=new int[n][k+1];
        int INF=-0x3f3f3f3f;
        for(int i=0;i<=k;i++) f[0][i]=g[0][i]=INF;
        f[0][0]=-prices[0];g[0][0]=0;
        for(int i=1;i<n;i++){
            for(int j=0;j<=k;j++){
                f[i][j]=Math.max(f[i-1][j],g[i-1][j]-prices[i]);
                g[i][j]=g[i-1][j];
                if(j-1>=0) g[i][j]=Math.max(g[i][j],f[i-1][j-1]+prices[i]);
            }
        }
        int max=Integer.MIN_VALUE;
        for(int i=0;i<=k;i++) max=Math.max(max,g[n-1][i]);
        return max;
    }
}
相关推荐
NAGNIP6 小时前
一文搞懂树模型与集成模型
算法·面试
NAGNIP6 小时前
万字长文!一文搞懂监督学习中的分类模型!
算法·面试
技术狂人1686 小时前
工业大模型工程化部署实战!4 卡 L40S 高可用集群(动态资源调度 + 监控告警 + 国产化适配)
人工智能·算法·面试·职场和发展·vllm
D_FW6 小时前
数据结构第六章:图
数据结构·算法
你怎么知道我是队长7 小时前
C语言---头文件
c语言·开发语言
期待のcode7 小时前
Java虚拟机的运行模式
java·开发语言·jvm
hqwest7 小时前
码上通QT实战25--报警页面01-报警布局设计
开发语言·qt·qwidget·ui设计·qt布局控件
a程序小傲7 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
HellowAmy7 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
自学不成才7 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘