在后面减前面的条件下,找出最大的差值。
思想:
后面的数和前面的数比较有两种情况
1.后面的数小于前面的数,那么更新最小值,只要减的是前面的值的最小值那么肯定相对大
2.后面的数大于等于前面的数,求后面的数和最小数的差diff,如果diff比之前的diff大,更新diff
- java
class Solution {
public int maxProfit(int[] prices) {
if(prices==null||prices.length==0)
return 0;
//后面的数和前面的数比较有两种情况
//1.后面的数小于前面的数,那么更新最小值,只要减的是前面的值的最小值那么肯定相对大
//2.后面的数大于等于前面的数,求后面的数和最小数的差diff,如果diff比之前的diff大,更新diff
int min=prices[0];
int diff=0;
for(int i=1;i<prices.length;i++){
if(prices[i]<min)
min=prices[i];
else if(prices[i]-min>diff)
diff=prices[i]-min;
}
return diff;
}
}
- javascript
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
if(prices==null||prices.length==0)
return 0;
//后面的数和前面的数比较有两种情况
//1.后面的数小于前面的数,那么更新最小值,只要减的是前面的值的最小值那么肯定相对大
//2.后面的数大于等于前面的数,求后面的数和最小数的差diff,如果diff比之前的diff大,更新diff
var min=prices[0];
var diff=0;
for(var i=1;i<prices.length;i++){
if(prices[i]<min){
min=prices[i];
}
else if(prices[i]-min>diff){
diff=prices[i]-min;
}
}
return diff;
};