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();
    }
}
相关推荐
SamDeepThinking2 小时前
Java面向对象在JVM里怎么实现
java·后端·面试
咸鱼翻身小阿橙3 小时前
多线程解析
java·开发语言
一枚码农出身的猎头4 小时前
岗位招聘:架构师,base湖南长沙,70-80w
java·架构
tachibana24 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹4 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
IT乐手4 小时前
Android 写本地日志工具类
android·java
阿维的博客日记5 小时前
spring里面的@RequestParam什么意思
java·后端·spring
laowangpython5 小时前
昆仑通态 Mcgs Pro软件安装步骤(附安装包)Mcgs Pro 3.3.6 下载安装教程(保姆级)
java·服务器·数据库·其他
旖-旎5 小时前
《LeetCode 646 最长数对链 || LeetCode 1143 最长公共子序列》
c++·算法·leetcode·动态规划
Frostnova丶5 小时前
(15)LeetCode 189. 轮转数组
数据结构·算法·leetcode