⓹➇ Best Time to Buy and Sell Stock
Top Interview 150, leetcode easy, C++, Algorithm
Published in
Jun 3, 2024
Today’s code
Solution
這一題算是第二次解了,事隔一段時間後,再回來寫真的是會有不同的想法,也感受到想法變得快速,使用額外計數器去紀錄也應用的很順手。
這裡的想法主要會宣告一些變數用於紀錄特別的資訊,我們會需要紀錄目前為止最大收益是多少(這同時也是題目要求我們求出的)
此外,我們還要去找新的temp_buy也就是更小的買入點,去做取代。不過這裡不用擔心,我們取代“買入點”temp_buy只是先暫時紀錄我們找到更低價的index,並不是取代“最大收益”max_profit。
那何時才會取代“最大收益”呢?當然是出現了比原本max_profit還要大的數值時,就取代。此外,還要更新temp_buy的值,因為我們已經找到更大的收益了max_profit,所以新的買入點同時更新。
就這樣我們要尋訪整個prices檢查所以的價位,去找到最大的收益。
程式碼如下:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int length = prices.size();
int i = 0;// for traverse
int temp_buy = prices[0];
int max_profit = 0;
while(i < length){
if(prices[i] < temp_buy){
temp_buy = prices[i];
}else if(prices[i] - temp_buy > max_profit){
max_profit = prices[i] - temp_buy;
}
i++;
}
return max_profit;
}
};