题目:
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
示例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;
}
}
结语:
晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!