LeetCode解析------63.股票的最大利润(JAVA)-动态规划

题目:

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

示例1:

输入: [7,1,5,3,6,4] 输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例2:

输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

简单介绍:
题目:股票的最大利润
题目难度:中等
使用语言:JAVA。
这道题来自leetcode题库的动态规划标签。

解题思路:
首先看题、分析题意,我们可以明确1个关键点:
1.如何计算出股票的最大利润
既然,我们已经分析出来题目的关键任务了,下面我们就可以开始思考实现了。
我们采用算法与数据结构的思路来剖析一下这题,

数据结构:
要实现对数据的操作,我们要先明确存储数据的数据结构。
该题的数据结构的作用,是保存当前最低买入价格和最高利润。

算法:
既然明确了int型数组作为解决该题的数据结构,我们就可以开始我们的算法分析了。
1.遍历prices数组,计算当前最低买入价格,最高利润

代码部分:

class Solution {
    public int maxProfit(int[] prices) {
        int low=Integer.MAX_VALUE;//当前最低买入价格
        int max=0;//最高利润
        for(int price:prices){
            low=Math.min(low,price);
            max=Math.max(max,price-low);
        }
        return max;
    }
    
}

在这里插入图片描述

结语:
晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!

猜你喜欢

转载自blog.csdn.net/weixin_44337475/article/details/105895073
今日推荐