这道题目的思路如下:
- 我们要找出最大的利润,我们自然而然的可以想到,如果我们求出在每一天卖出的最大利润,然后在其中求出最大值,我们就得到了答案
- 我们如何找出在每一天卖出的最大利润呢?大家肯定都看过股票的涨跌图,这一天的最大利润当然是用这一天的价值减去在他之前的最小值
- 所以我们需要定义两个变量,一个表示今天之前的价值最小值min,一个代表今天之前的利润最大值max。
- 我们每次遍历一个首先先判断今天的价值是否小于min,如果小于今天卖出的利润肯定是负数所以我们不用比较最大利润了,如果今天的价值大于min,我们则需要求一下今天卖出的最大价值,然后和max进行比较取较大者直到遍历完整个数组,max即为我们要的结果。
class Solution {
public int maxDiff(int[] nums) {
if(nums==null||nums.length==0)return 0;
int min=nums[0];
int max=0;
for(int i=1;i<nums.length;i++){
if(nums[i]<min)min=nums[i];
else{
max=Math.max(max,nums[i]-min);
}
}
return max;
}
}