代码随想录算法训练营 动态规划part11

一、买卖股票的最佳时机III

123. 买卖股票的最佳时机 III - 力扣(LeetCode)

请选一个喜欢的吧/(ㄒoㄒ)/~~123. 买卖股票的最佳时机 III - 力扣(LeetCode)

复制代码
class Solution {
    public int maxProfit(int[] prices) {
        if(prices==null || prices.length==0) {
            return 0;
        }
        int n = prices.length;
        //定义二维数组,5种状态  
        int[][] dp = new int[n][5];
        //初始化第一天的状态
        dp[0][0] = 0;
        dp[0][1] = -prices[0];
        dp[0][2] = 0;
        dp[0][3] = -prices[0];
        dp[0][4] = 0;
        for(int i=1;i<n;++i) {
            //dp[i][0]相当于初始状态,它只能从初始状态转换来
            dp[i][0] = dp[i-1][0];
            //处理第一次买入、第一次卖出
            dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]-prices[i]);
            dp[i][2] = Math.max(dp[i-1][2],dp[i-1][1]+prices[i]);
            //处理第二次买入、第二次卖出
            dp[i][3] = Math.max(dp[i-1][3],dp[i-1][2]-prices[i]);
            dp[i][4] = Math.max(dp[i-1][4],dp[i-1][3]+prices[i]);
        }
        //返回最大值
        return Math.max(Math.max( Math.max(dp[n-1][0],dp[n-1][1]),Math.max(dp[n-1][2],dp[n-1][3]) ),dp[n-1][4]);
    }
}

二、买卖股票的最佳时机IV

188. 买卖股票的最佳时机 IV - 力扣(LeetCode)

同上一题一样ε(┬┬﹏┬┬)3188. 买卖股票的最佳时机 IV - 力扣(LeetCode)

复制代码
class Solution {
    public int maxProfit(int k, int[] prices) {
        if(prices==null || prices.length==0) {
            return 0;
        }
        return dfs(0,0,0,k,prices);
    }
    //计算k次交易,index表示当前是哪天,status是买卖状态,coutnt为交易次数
    private int dfs(int index, int status, int count, int k, int[] prices) {
        if(index==prices.length || count==k) {
            return 0;
        }
        int a=0,b=0,c=0;
        //保持不动
        a = dfs(index+1,status,count,k,prices);
        if(status==1) {
            //卖一股,并将交易次数+1
            b = dfs(index+1,0,count+1,k,prices)+prices[index];
        } else {
            //买一股
            c = dfs(index+1,1,count,k,prices)-prices[index];
        }
        return Math.max(Math.max(a,b),c);
    }
}
相关推荐
一去不复返的通信er1 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
程序 代码狂人4 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade4 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
小郎君6587 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
算法
邵奈一7 小时前
GPT-6.1 Terra速度是Sol的3倍,价格减半
算法
RaaS1007 小时前
Node.js Brotli RCE 漏洞自查指南:fetch、undici、axios 都在影响面,三分钟确认你的版本
人工智能·深度学习·算法
shehuiyuelaiyuehao7 小时前
算法56,重排链表
数据结构·算法·链表
qq_452396238 小时前
第四篇:《索引原理与实战:B-tree、Hash、GIN、GiST、BRIN》
算法·哈希算法·gin
西索斯coding8 小时前
Qwen3-Max 与 Qwen-Plus:60 个真实修复任务评测方案
大数据·网络·算法·ai