动态规划算法-简单多状态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;
    }
}
相关推荐
似水明俊德8 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
无极低码8 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发8 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
Thera7779 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
superior tigre9 小时前
22 括号生成
算法·深度优先
炘爚9 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon10 小时前
C#常用类库-详解SerialPort
开发语言·c#
凸头10 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun31415910 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
Moksha26210 小时前
5G、VoNR基本概念
开发语言·5g·php