技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
13
0
自我挑戰組
從零開始學習LeetCode
系列 第
13
篇
Day 13:Best Time to Buy and Sell Stock II
17th鐵人賽
pinggg
2025-09-27 22:59:45
67 瀏覽
分享至
題目:給定一個整數陣列 prices,其中第 i 個元素代表股票在第 i 天的價格
不同於 Day 12,這次你可以多次買賣股票(但同一天不能同時買入和賣出),求最大獲利
解法一
只要有漲就加差額
最簡單,直接加總每次漲幅
註解:
每天只要股價上升,就把差額加進總獲利
就像「買進後隔天馬上賣出」,不必管全局,因為每段上漲都可以賺到
理解:
想像你每天觀察,如果明天比今天貴,那今天就買,明天就賣,累積所有小獲利
解法二
找低買高賣
模擬投資人行為
註解:
找到「低谷」買入,再找到「高峰」賣出
就像觀察整個價格走勢,決定最佳的「一段段操作」
與貪心法結果相同,但寫法更直觀地模擬投資人行為
理解:
想像在股市圖表上畫線,低點買,高點賣,每一段漲幅都抓住
解法三
狀態轉移(持股/不持股)
更正式的解法
註解
dp[i][0]:第 i 天結束後 沒有持股 的最大獲利
dp[i][1]:第 i 天結束後 持有股票 的最大獲利
遞推公式:
(1)今天不持股 = max(昨天不持股, 昨天持股 + 今天賣)
(2)今天持股 = max(昨天持股, 昨天不持股 - 今天買)
理解:
像是每天做「兩種選擇」:要不要持股?用動態規劃表記錄所有可能,最後取最大獲利
留言
追蹤
檢舉
上一篇
Day 12:Best Time to Buy and Sell Stock
下一篇
Day 14 Best Time to Buy and Sell Stock with Cooldown
系列文
從零開始學習LeetCode
共
30
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
26
Day 26 Valid Parentheses
27
Day 27 Longest Common Prefix
28
Day 28 Valid Palindrome
29
Day29 First Unique Character in a String
30
Day30 總結
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19856
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
防火牆fortinet只開放line 問題
Gem如何找到該功能?!我是Gemini付費使用者
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
照片破圖或是有損壞,如何修復?
熱門回答
防火牆fortinet只開放line 問題
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
熱門文章
Agentic AI 開發實戰:我是如何設計 “Code + LLM” 混合架構,解決 AI品質不穩的問題?
[gem5] 該怎麼編譯以及運行 gem5 ?
讓人受益終身的 9 種數據分析思維
【C++學習筆記】01《從零學習C++,跟世界打招呼吧!》
數位轉型是什麼?從定義、三階段到成功案例一次看懂
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}