技術問答
技術文章
iT 徵才
Tag
聊天室
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
50 瀏覽
分享至
題目:給定一個整數陣列 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
組
累計文章數
19838
篇
完賽人數
529
人
看影片追技術
看更多
{{ 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
熱門問題
FortiGate 的VLAN Switch問題
源碼檢測稽核會不會超耗時
內控內稽的作業流程圖.請問哪裡有設備工程業的
你們都在哪裡購買SSL
WIN SERVER 出現錯誤LOG
VMware上的虛擬機多了一個VMDK的硬碟在增長
浮水印在PDF上沒有辦法顯示
DOCKER問題請教
越南 Oracle EBS 輔導顧問公司
熱門回答
你們都在哪裡購買SSL
源碼檢測稽核會不會超耗時
FortiGate 的VLAN Switch問題
內控內稽的作業流程圖.請問哪裡有設備工程業的
WIN SERVER 出現錯誤LOG
熱門文章
Google 暗網監控 暗網報告
[實作] 不用買貴森森的 Vector!我用 Python 自製了一套 J1939 CAN Bus 解碼器
資料視覺化工具比較全攻略:選出最懂你的可視化平台
別找了!最全資料視覺化配色指南在這
掌握財務命脈:揭祕16個常用的財務指標
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}