121.Best Time to Buy and Sell Stock

在后面减前面的条件下,找出最大的差值。



思想:
后面的数和前面的数比较有两种情况
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;
    
};

推荐阅读更多精彩内容