买卖股票的最佳时机-LeetCode

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。git

若是你最多只容许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。github

注意你不能在买入股票前卖出股票。算法

示例 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。

思路:get

        1.后一天比前一天小,确定不能计算it

        2.由于只计算最大利润,找到最小的,始终用后面 比它大的 - 最小的就能够了,最大利润若是后面有更大的,就直接覆盖了static

public static void main(String[] args){
    int [] a = {3,1,3,3,7,4};
    System.out.println(maxProfit(a));
}

public static int maxProfit(int[] prices) {
    if (prices == null || prices.length < 1) {
        return 0;
    }
    int max = 0;//最大利润
    int min = prices[0];//将第一个假设为最小值
    for(int i = 0; i <prices.length ; i++){
       int a = prices[i];
       //若是当前值小于最小值
        if (a < min)
            //将当前值设置为最小值
            min = a;
        else{
            //若是当前值大于等于最小值

            //若是 当前值 - 最小值 > 最大利润
            if(max < a - min)
                //将最大利润 设置为 当前值 - 最小值
                max = a - min;
        }
    }
    return max;
}

 

LeetCode 所有题目讲解与答案,可移步 GitHub:https://github.com/yan-qiang/LeetCodeco

相关文章
相关标签/搜索