vocus logo

方格子 vocus

[TS LeetCode] 122. Best Time to Buy and Sell Stock II+貪婪演算法

更新 發佈閱讀 4 分鐘


題目摘要

給定一個整數陣列 `prices`,其中 `prices[i]` 代表第 `i` 天的股票價格。在每一天,你可以決定買入和/或賣出股票。然而,你同一時間只能擁有至多一股股票。你可以在同一天內買入然後立刻賣出股票。找出並返回你可以實現的最大利潤。


貪婪演算法(Greedy algorithm)

  • 貪婪演算法通常用於優化問題,其中需要在一組可能的選擇中選擇最佳解決方案,以最大化或最小化某個目標函數。
  • 貪婪演算法基於當前情況下的最佳選擇,而不關心全局的最優解。
  • 在每一步,貪婪演算法都選擇當前情況下的最佳選擇,並且不會回頭更改之前的選擇。

特色

  1. 局部最佳選擇:貪婪演算法選擇的是局部最佳選擇,即在每一步都儘量達到最有利的結果,而不考慮全局最優解。這使得貪婪演算法容易實現和理解。
  2. 無回頭修改:一旦貪婪演算法做出了選擇,就不會回頭更改。這意味著它不考慮之前的決策對未來決策的影響,因此通常不需要記錄整個決策過程的歷史。
  3. 適用性:貪婪演算法適用於具有最佳子結構性質和無後效性的問題。最佳子結構性質表示全局最優解可以由局部最佳解組合而成,而無後效性表示過去的決策不會影響未來的決策。
  4. 效率:貪婪演算法通常具有較低的計算成本和更快的執行速度,因為它僅關注當前情況。
  5. 不保證最優解:貪婪演算法不保證找到全局最優解,因為它忽略了全局的考慮。它可能會找到一個接近最優解的解,但不一定是最佳的。


總而言之,貪婪演算法是一種簡單而有效的問題解決方法,特別適用於某些問題,其中局部最佳選擇能夠導致全局最優解。然而,它不適用於所有問題,且無法保證最優解,因此在應用時需要謹慎考慮問題的特性和要求。


解題思路

  1. 問題理解:首先,仔細閱讀題目,了解它要求我們根據每天的股票價格,找出最佳的交易策略,以最大化利潤。關鍵是我們可以在同一天內買入和賣出,並且可以多次進行交易。
  2. 貪婪策略:明確了解貪婪策略的應用,即在每一天只要價格上升,就執行交易,以實現價格增長的利潤。我們不需要等到價格達到最高點才賣出。
  3. 演算法實現:遍歷股票價格陣列,檢查相鄰兩天的價格。如果今天的價格高於昨天,我們執行買入和賣出操作,並將利潤累積到最終的最大利潤中。
  4. 程式碼實現:將這個貪婪策略轉化為程式碼。使用一個迴圈來遍歷價格陣列,並使用條件語句檢查價格的變化。如果價格上升,就進行交易操作,並更新最大利潤。


function maxProfit(prices: number[]): number {
let maxProfit: number = 0;

for (let i = 1; i < prices.length; i++) {
if (prices[i - 1] < prices[i]) {
maxProfit += prices[i] - prices[i - 1];
}
}
return maxProfit;
};


貪婪演算法的應用

在這個問題中,貪婪策略是基於當前價格是否上升,來選擇買入和賣出操作,以實現利潤最大化。如果當前一天的股價高於前一天,則可以考慮在前一天購入並當天賣出以獲得利潤。這是因為你可以在同一天內買入然後立刻賣出,並從價格上升中獲得利潤。如果價格下降或保持不變,則不執行交易操作,因為這樣可能不會增加利潤。


範例

假設股價變化如下: [7, 1, 5, 3, 6, 4],根據貪婪策略,可以執行以下操作:

  • 在第 2 天(價格 1)買入,第 3 天(價格 5)賣出,獲得利潤 4。
  • 在第 4 天(價格 3)買入,第 5 天(價格 6)賣出,獲得利潤 3。

總利潤為 4 + 3 = 7,這是最大的利潤。


結論

因此,在這個問題中,貪婪演算法的應用是通過根據當前價格的變化來執行交易操作,而不需要預測未來價格變化趨勢,以實現最大化的利潤。這個方法在簡單且有效的情況下非常適用,並且在實務應用中具有廣泛的用途。


相關連結



留言
avatar-img
毛怪的沙龍
3會員
8內容數
"TypeScript LeetCode" 以 TypeScript 為工具,深入解析 LeetCode 上的算法和資料結構問題,提供清晰解釋和程式碼示範,幫助您精進 TypeScript 技能,解決挑戰性問題,無論您的程式開發水平如何。讓我們一同鑽研、提升,迎接算法挑戰,成長技術專長!,快速提高您的技能水平
毛怪的沙龍的其他內容
2023/10/19
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
2023/10/19
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
2023/10/16
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
Thumbnail
2023/10/16
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
Thumbnail
2023/10/12
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
Thumbnail
2023/10/12
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
Thumbnail
看更多
你可能也想看
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
作者Mark Minervini ,取自網路 大家好,我台股小書僮啦!繼續來搬從探路客轉過來的舊文章,今天來分享《超級績效》的一些內容。
Thumbnail
作者Mark Minervini ,取自網路 大家好,我台股小書僮啦!繼續來搬從探路客轉過來的舊文章,今天來分享《超級績效》的一些內容。
Thumbnail
什麼是交易策略?簡而言之,交易策略就是當你在交易時,面對不同的價格、情況,所採取的應對進退。 例如:要不要買入?賣出?加碼?停損?追價?用程式交易?用短線當沖?用定期定額?用技術分析?用籌碼分析?用基本分析?這些都是交易策略的一種選擇。 而到底該如何設定交易策略呢?讓我們從五點切入來幫你解答吧!
Thumbnail
什麼是交易策略?簡而言之,交易策略就是當你在交易時,面對不同的價格、情況,所採取的應對進退。 例如:要不要買入?賣出?加碼?停損?追價?用程式交易?用短線當沖?用定期定額?用技術分析?用籌碼分析?用基本分析?這些都是交易策略的一種選擇。 而到底該如何設定交易策略呢?讓我們從五點切入來幫你解答吧!
Thumbnail
題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 題目給我們一次做多的機會,也就是A交易日買進,B交易日賣出,請問最大獲利是多少?(此處不需要考慮現實面的交易稅、手續費...等因素) 如果無法獲利,則題目要求return 0。
Thumbnail
題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 題目給我們一次做多的機會,也就是A交易日買進,B交易日賣出,請問最大獲利是多少?(此處不需要考慮現實面的交易稅、手續費...等因素) 如果無法獲利,則題目要求return 0。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
對短線操作的朋友而言,「擇時」是個重要的關鍵,總是希望能透過買低賣高、賺價差來獲利。但對採用中長線投資策略的朋友,其實每天都是可以進場的好時機!
Thumbnail
對短線操作的朋友而言,「擇時」是個重要的關鍵,總是希望能透過買低賣高、賺價差來獲利。但對採用中長線投資策略的朋友,其實每天都是可以進場的好時機!
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
在AI浪潮下,009819 中信美國數據中心及電力ETF 直接卡位算力與電力雙主軸,等於掌握AI最核心基建。2008從 Apple Inc. 與 iPhone 帶動供應鏈,到如今AI崛起,主線已由應用端轉向底層。AI發展離不開算力與電力支撐,009819的價值,在於押中「沒有它不行」的核心資產。
Thumbnail
在任何領域一定有它的遊戲規則、有屬於它的有效率方法;在股市採取這樣的交易攻略必然是一定贏!!本投資心法至為重要!絕對值得一讀!! 但如果您追求的是"短期"、"每次"都是"100%"、"百分之百"、"準確"、"精準"總是能一定贏的話...很抱歉,本篇文章與阿Sir的專欄系列文並不適合您閱讀!!
Thumbnail
在任何領域一定有它的遊戲規則、有屬於它的有效率方法;在股市採取這樣的交易攻略必然是一定贏!!本投資心法至為重要!絕對值得一讀!! 但如果您追求的是"短期"、"每次"都是"100%"、"百分之百"、"準確"、"精準"總是能一定贏的話...很抱歉,本篇文章與阿Sir的專欄系列文並不適合您閱讀!!
Thumbnail
題目摘要 給定一個整數陣列 `prices`,其中 `prices[i]` 代表第 `i` 天的股票價格。在每一天,你可以決定買入和/或賣出股票。然而,你同一時間只能擁有至多一股股票。你可以在同一天內買入然後立刻賣出股票。找出並返回你可以實現的最大利潤。
Thumbnail
題目摘要 給定一個整數陣列 `prices`,其中 `prices[i]` 代表第 `i` 天的股票價格。在每一天,你可以決定買入和/或賣出股票。然而,你同一時間只能擁有至多一股股票。你可以在同一天內買入然後立刻賣出股票。找出並返回你可以實現的最大利潤。
Thumbnail
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
股市裡充斥著各式各樣的騙子,只有『成交量』是唯一的例外。華爾街名言 文章重點整理 1. 看懂價量關係,掌握對的時機,成功就在不遠處。 2. 那些有關股價上漲下跌,很多投資人都知道的小秘密。 3. 瞭解橫盤震盪階段支撐和壓力。 4. 不同量價組合,各種量價組合的實例分析。
Thumbnail
股市裡充斥著各式各樣的騙子,只有『成交量』是唯一的例外。華爾街名言 文章重點整理 1. 看懂價量關係,掌握對的時機,成功就在不遠處。 2. 那些有關股價上漲下跌,很多投資人都知道的小秘密。 3. 瞭解橫盤震盪階段支撐和壓力。 4. 不同量價組合,各種量價組合的實例分析。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News