Java | Leetcode Java题解之第188题买卖股票的最佳时机IV

题目:

题解:

java 复制代码
class Solution {
    public int maxProfit(int k, int[] prices) {
        if (prices.length == 0) {
            return 0;
        }

        int n = prices.length;
        k = Math.min(k, n / 2);
        int[] buy = new int[k + 1];
        int[] sell = new int[k + 1];

        buy[0] = -prices[0];
        sell[0] = 0;
        for (int i = 1; i <= k; ++i) {
            buy[i] = sell[i] = Integer.MIN_VALUE / 2;
        }

        for (int i = 1; i < n; ++i) {
            buy[0] = Math.max(buy[0], sell[0] - prices[i]);
            for (int j = 1; j <= k; ++j) {
                buy[j] = Math.max(buy[j], sell[j] - prices[i]);
                sell[j] = Math.max(sell[j], buy[j - 1] + prices[i]);   
            }
        }

        return Arrays.stream(sell).max().getAsInt();
    }
}
相关推荐
雨中飘荡的记忆2 分钟前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
jbtianci8 分钟前
Spring Boot管理用户数据
java·spring boot·后端
cpp_25019 分钟前
P8448 [LSOT-1] 暴龙的土豆
数据结构·c++·算法·题解·洛谷
YGGP10 分钟前
【Golang】LeetCode 49. 字母异位词分组
leetcode
Sylvia-girl11 分钟前
线程池~~
java·开发语言
魔力军15 分钟前
Rust学习Day3: 3个小demo实现
java·学习·rust
唐梓航-求职中18 分钟前
编程大师-技术-算法-leetcode-1472. 设计浏览器历史记录
算法·leetcode
时艰.18 分钟前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存
落花流水 丶18 分钟前
Java 多线程完全指南
java
jxy999828 分钟前
mac mini 安装java JDK 17
java·开发语言·macos