美文网首页
每日一道算法题 - 买卖股票的最佳时机

每日一道算法题 - 买卖股票的最佳时机

作者: 辉_ace | 来源:发表于2021-12-09 23:34 被阅读0次

问题

给定一个数组,数组中每个元素代表当前股票在这一天的价格
prices = {7,1,5,3,6,4}
第一天价格:7
第二天价格:1
第三天价格:5
prices[index][price]

计算在固定天数内能获取到的最大利润为多少,不能同时进行多笔交易,购买之前必须将手上的股票卖掉。

关键字

贪心算法

不从整体最优考虑,只关注局部最优,做出当前最优解。

思路

两两比较,获取当前的差值,并不断进行累加。
假定存在数组{a,b,c,d,e},则 total=(b-a) + (c-b) + (d-c) + (e-d);


image.png

实现

public class MaxProfit {

    public static void main(String[] args) {

        //初始数组
        int[] nums = new int[]{7,1,5,3,6,4};
        int total = maxProfit(nums);
        System.out.println(total);
    }

    private static int maxProfit(int[] nums) {

        //初始利润
        int total = 0;
        
        //遍历数组,两两获取差值,并累加
        for (int i=0;i<nums.length-1;i++){
            total+=Math.max(nums[i+1]-nums[i],0);
        }
        return total;
    }
}

相关文章

网友评论

      本文标题:每日一道算法题 - 买卖股票的最佳时机

      本文链接:https://www.haomeiwen.com/subject/qybqfrtx.html