day114(3.16)——leetcode面试经典150

188. 买卖股票的最佳时机 IV

188. 买卖股票的最佳时机 Ⅳ

题目:

题解:

java 复制代码
class Solution {
    public int maxProfit(int k, int[] prices) {
        if(prices==null || prices.length < 2) {
            return 0;
        }
        int n = prices.length;
        //只依赖前一天
        int[][] dp = new int[k+1][2];
        for(int i=0;i<=k;i++) {
            dp[i][0]=0;
            dp[i][1]=-prices[0];
        }
        for(int i=1;i<n;i++) {
            for(int j=1;j<=k;j++) {
                // 卖出:保持不持有 OR (持有 + 今天卖出)
                dp[j][0]=Math.max(dp[j][0], prices[i]+dp[j][1]);
                // 买入:保持持有 OR (完成 j-1 笔后不持有 - 今天买入)
                dp[j][1]=Math.max(dp[j][1], dp[j-1][0]-prices[i]);
            }
        }
        return dp[k][0];
    }
}
相关推荐
wfbcg8 分钟前
每日算法练习:LeetCode 15. 三数之和 ✅
算法·leetcode·职场和发展
2301_8227032014 分钟前
开源鸿蒙跨平台Flutter开发:跨端图形渲染引擎的类型边界与命名空间陷阱:以多维雷达图绘制中的 dart:ui 及 StrokeJoin 异常为例
算法·flutter·ui·开源·图形渲染·harmonyos·鸿蒙
y = xⁿ15 分钟前
【LeetCode Hot100】双指针:分离指针
算法·leetcode
学习永无止境@16 分钟前
Verilog中有符号数计算
图像处理·算法·fpga开发
6Hzlia20 分钟前
【Hot 100 刷题计划】 LeetCode 41. 缺失的第一个正数 | C++ 原地哈希题解
c++·leetcode·哈希算法
小肝一下1 小时前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
ambition202421 小时前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法
徒 花1 小时前
Python知识学习08
java·python·算法
chushiyunen1 小时前
milvus笔记、常用表结构
笔记·算法·milvus
YunQuality1 小时前
六西格玛黑带三个月拿证经验分享
笔记·职场和发展·职场·学习方法