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;
    
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容