一、題目大意
標簽: 貪心
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii
給你一個整數陣列 prices ,其中 prices[i] 表示某支股票第 i 天的價格,
在每一天,你可以決定是否購買和/或出售股票,你在任何時候 最多 只能持有 一股 股票,你也可以先購買,然后在 同一天 出售,
回傳 你能獲得的 最大 利潤 ,
示例 1:
輸入:prices = [7,1,5,3,6,4]
輸出:7
解釋:在第 2 天(股票價格 = 1)的時候買入,在第 3 天(股票價格 = 5)的時候賣出, 這筆交易所能獲得利潤 = 5 - 1 = 4 ,
隨后,在第 4 天(股票價格 = 3)的時候買入,在第 5 天(股票價格 = 6)的時候賣出, 這筆交易所能獲得利潤 = 6 - 3 = 3 ,
總利潤為 4 + 3 = 7 ,
示例 2:
輸入:prices = [1,2,3,4,5]
輸出:4
解釋:在第 1 天(股票價格 = 1)的時候買入,在第 5 天 (股票價格 = 5)的時候賣出, 這筆交易所能獲得利潤 = 5 - 1 = 4 ,
總利潤為 4 ,
示例 3:
輸入:prices = [7,6,4,3,1]
輸出:0
解釋:在這種情況下, 交易無法獲得正利潤,所以不參與交易可以獲得最大利潤,最大利潤為 0 ,
提示:
- 1 <= prices.length <= 3 * 104
- 0 <= prices[i] <= 104
二、解題思路
每天可以無限次買賣,但是只能持有一支股票,想有最大利潤,就得低價買高價賣,如果第二天價格比當前價格高,我們就賣出,把差價加入利潤中,若后天價格更高,我們還可以在第二天賣出后再買入,以此類推,遍歷完整個陣列后即可獲得最大利潤,
三、解題方法
3.1 Java實作
public class Solution {
public int maxProfit(int[] prices) {
int res = 0;
for (int i = 1; i < prices.length; i++) {
int tmp = prices[i] - prices[i-1];
res += tmp > 0 ? tmp : 0;
}
return res;
}
}
四、總結小記
- 2022/7/29 原來把題目弄清楚、思路理清楚后,寫代碼是這么簡單
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/500581.html
標籤:其他
