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();
    }
}
相关推荐
云霄IT4 分钟前
新版电脑微信4.1.x.x小程序逆向之——寻找小程序存放位置目录和__APP__.wxapkg
java·微信·小程序
微信api接口介绍5 分钟前
微信社群管理开发
java·开发语言·网络·微信
海琴烟Sunshine39 分钟前
leetcode 168. Excel 表列名称 python
python·算法·leetcode
「QT(C++)开发工程师」1 小时前
C++语言编程规范-并发
java·linux·c++
Meteors.1 小时前
23种设计模式——迭代器模式 (Iterator Pattern)详解
java·设计模式·迭代器模式
自由的疯1 小时前
Java Jenkins+Docker部署jar包
java·后端·架构
自由的疯1 小时前
Java Jenkins、Dockers和Kubernetes有什么区别
java·后端·架构
友莘居士1 小时前
Java基于Web3j调用智能智能合约案例
java·web3·智能合约
1白天的黑夜12 小时前
递归-21.合并两个有序链表-力扣(LeetCode)
c++·leetcode·链表·递归
哲此一生9842 小时前
SpringBoot3集成Mybatis(开启第一个集成Mybatis的后端接口)
java·spring boot·mybatis