題目:
假設把某股票的價格按照時間先後順序存儲在數組中,請問買賣該股票一次可能獲得的最大利潤是多少?
示例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;
}
}
結語:
晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!晚安!