每日小记-买股票,数组最大增量差**未完成

问题就是一个数组,代表每天的股票价格,买了再卖找到最大的利润值

1.只许买卖一次

动态规划or最小前缀值

    public int maximumDifference(int[] nums) {
        if (nums.length==0||nums==null)return -1;
        int res=-1;int premin=nums[0];
        for (int i = 0; i < nums.length; i++) {
            if(nums[i]>premin){
                res=Math.max(nums[i]-premin,res);
            }
            else{
                premin=nums[i];
            }
        }
        return res;
    }

2.买卖多次,但必须是买-卖光-买-卖光

整个问题等价于寻找 x 个不相交的区间,使得利益最大

贪心算法

需要说明的是,贪心算法只能用于计算最大利润,计算的过程并不是实际的交易过程。

    public int maxProfit(int[] prices) {
        int ans = 0;
        int n = prices.length;
        for (int i = 1; i < n; ++i) {
            ans += Math.max(0, prices[i] - prices[i - 1]);
        }
        return ans;
    }

动态规划

过后补充

上一篇:LeetCode29-两数相除-位运算-模拟


下一篇:二、计算机基础