DAY41 股票问题

I

某天买入某天卖出

java 复制代码
    public int maxProfit(int[] prices) {
        int min=prices[0];
        int maxProfit=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]<min)min=prices[i];
            int profit=prices[i]-min;
            if(profit>maxProfit)maxProfit=profit;

        }
        return maxProfit;
    }

II

每天都可买入卖出

最多同时持有一只股票

java 复制代码
    public int maxProfit(int[] prices) {
        int []profit=new int[prices.length];
        int res=0;
        for(int i=1;i<prices.length;i++){
            profit[i]=prices[i]-prices[i-1];
            if(profit[i]>0)res+=profit[i];
        }
        return res;


    }

III

最多买卖两次

java 复制代码
    public int maxProfit(int[] prices) {
        int len=prices.length;

        int [][]dp=new int[len][5];
        dp[0][1]=-prices[0];
        dp[0][3]=-prices[0];
        for(int i=1;i<len;i++){
            
            dp[i][1]=Math.max(dp[i-1][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 dp[len-1][4];

    }
相关推荐
Musennn1 小时前
leetcode98.验证二叉搜索树:递归法中序遍历的递增性验证之道
java·数据结构·算法·leetcode
reduceanxiety1 小时前
机试 | vector/array Minimum Glutton C++
数据结构·c++·算法
2301_794461572 小时前
力扣-最大连续一的个数
数据结构·算法·leetcode
清心歌3 小时前
二叉树遍历
数据结构·算法
不二狗4 小时前
每日算法 -【Swift 算法】字符串转整数算法题详解:myAtoi 实现与正则表达式对比
算法·正则表达式·swift
feifeigo1235 小时前
认知无线电系统中采用能量检测频谱感知
算法
ghie90905 小时前
基于MATLAB的大规模MIMO信道仿真
数据结构·算法·matlab
we199898985 小时前
matlab时间反转镜算法
开发语言·算法·matlab
2201_754918415 小时前
YOLOv1 详解:单阶段目标检测算法的里程碑
人工智能·算法·yolo·目标检测
1白天的黑夜16 小时前
动态规划-918.环形子数组的最大和-力扣(LeetCode)
算法·leetcode·动态规划