动态规划算法-简单多状态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;
    }
}
相关推荐
weixin_417396835 小时前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电
某不知名網友6 小时前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
java_nnnn6 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
qetfw6 小时前
Bash 字符串处理:参数展开、序列与脚本执行方式
linux·开发语言·chrome·bash
小羊没烦恼!6 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
wanderist.6 小时前
202609CSP认证P3
算法
学Linux的语莫7 小时前
python中类的常见写法
开发语言·python·状态模式
需要8267 小时前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
云淡风轻~窗明几净7 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
dyxal7 小时前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi