天天看點

LeetCode解析------63.股票的最大利潤(JAVA)-動态規劃

題目:

假設把某股票的價格按照時間先後順序存儲在數組中,請問買賣該股票一次可能獲得的最大利潤是多少?

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

簡單介紹:

題目:股票的最大利潤

題目難度:中等

使用語言:JAVA。

這道題來自leetcode題庫的動态規劃标簽。

解題思路:

首先看題、分析題意,我們可以明确1個關鍵點:

1.如何計算出股票的最大利潤

既然,我們已經分析出來題目的關鍵任務了,下面我們就可以開始思考實作了。

我們采用算法與資料結構的思路來剖析一下這題,

資料結構:

要實作對資料的操作,我們要先明确存儲資料的資料結構。

該題的資料結構的作用,是儲存目前最低買入價格和最高利潤。

算法:

既然明确了int型數組作為解決該題的資料結構,我們就可以開始我們的算法分析了。

1.周遊prices數組,計算目前最低買入價格,最高利潤

代碼部分:

class Solution {
    public int maxProfit(int[] prices) {
        int low=Integer.MAX_VALUE;//目前最低買入價格
        int max=0;//最高利潤
        for(int price:prices){
            low=Math.min(low,price);
            max=Math.max(max,price-low);
        }
        return max;
    }
    
}
           
LeetCode解析------63.股票的最大利潤(JAVA)-動态規劃

結語:

晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!