[TS LeetCode] 121. Best Time to Buy and Sell Stock

更新於 發佈於 閱讀時間約 2 分鐘


題目摘要

給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。

題目知識點

  • 利潤最大化
  • Math.min() 和 Math.max() 函數的應用


先備知識

在理解此問題之前,應具備以下知識:

  • 陣列的基本操作
  • 簡單的迴圈和條件語句


應用情境

這個問題模擬了股票交易的情境,特別是在開發股票交易網頁應用程式時可能會用到。以下是一些可能的應用情境:

  1. 股票交易平台: 在一個股票交易平台的網頁應用中,你可以使用這個演算法幫助用戶找到最佳買入和賣出時機,以最大化他們的利潤。
  2. 投資組合管理工具: 用於投資組合管理的網頁應用可以使用這個演算法來計算不同股票的最佳交易策略,以幫助投資者做出明智的決策。
  3. 教育平台: 在股票市場教育課程中,可以使用這個問題來教授如何選擇最佳的買賣時機,並最大化投資利潤。
  4. 量化交易策略: 用於自動交易的算法可能使用這個演算法來執行買入和賣出決策。


結論

這個問題要求你找到一天買入股票並在未來某一天賣出以獲得最大利潤。解決這個問題的關鍵在於維護一個最低的購買價格,同時計算每一天賣出時的潛在利潤,最終返回最大利潤。

這個問題適用於股票交易相關的應用,並可幫助用戶制定投資策略,以達到最大化利潤的目標。程式碼中使用了 Math.min()Math.max() 函數,這些函數有助於簡化比較和計算的邏輯。


解答

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

    for (let i = 1; i < prices.length; i++) {
        minBuyPrice = Math.min(minBuyPrice, prices[i]);
        maxProfit = Math.max(maxProfit, prices[i] - minBuyPrice)
    }
    return maxProfit;
};
avatar-img
2會員
8內容數
"TypeScript LeetCode" 以 TypeScript 為工具,深入解析 LeetCode 上的算法和資料結構問題,提供清晰解釋和程式碼示範,幫助您精進 TypeScript 技能,解決挑戰性問題,無論您的程式開發水平如何。讓我們一同鑽研、提升,迎接算法挑戰,成長技術專長!,快速提高您的技能水平
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
毛怪的沙龍 的其他內容
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
[Leetcode 筆記] TypeScript 2715. Timeout Cancellation 了解和有效使用 clearTimeout 和 setTimeout 可以提高JavaScript程序的效率和響應性。
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
重要知識點: 1. TypeScript 全局擴展,使所有陣列都能使用 groupBy 方法。 2. 利用泛型創建彈性函數,提高代碼可重用性。 3. 迭代陣列中的元素,實現遍歷和處理功能。 4. 物件的鍵值對操作,用於建立以函數輸出為鍵的物件。
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
[Leetcode 筆記] TypeScript 2715. Timeout Cancellation 了解和有效使用 clearTimeout 和 setTimeout 可以提高JavaScript程序的效率和響應性。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
操作ETF的兩難就在於 什麼時候要買進? 什麼時候要賣出? 買太早套住怎麼辦? 賣太早空手怎麼辦? 教練的挖寶操作可以解決上述問題!!
Thumbnail
一般人會想像一個完美的時機點、完美的價位,在剛剛好對的時間賣出股票,可以獲利又沒有錯失行情,但這個完美時機點位並不存在,實際是追高殺低還更容易、更符合人性,要買最低賣最高,應該比中樂透還難。
Thumbnail
大家好,我是小畢,在投資的路上,投資人都希望在股價低時買進,在股價高時賣出獲得報酬,正因為如此,就必須準確地預測何時是低點,以及何時是高點。 有些投資人會採用技術分析,利用各種技術指標來判斷低點和高點,例如移動平均線指標,當股價高於移動平均線時買進,股價低於移動平均線時賣出,而有的投資人則是採
Thumbnail
題目敘述 題目會給我們一個StockSpanner類別, 還有對應的建構子和function: int next( int price)介面。 next(int price)呼叫的時後回傳入當天的股票價格,要求我們計算price這個價格是過去k天以來的最高價,返回k值。 舉例來說: 若股價分
Thumbnail
買賣股票一直都是一門高深的學問,何時買才是好時機?何時賣才是好時機? 上面這個問題, 10個人有10個答案, 100個人有100個答案,有的人答案是自己找出來的,有的人的答案是參考別人的,在寫出自己的,有的人的答案是抄別人的,但怎樣的答案才是對或錯呢?   說真的,我到現在
Thumbnail
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
Thumbnail
在股票市場,若要能大幅的獲利,關鍵應該不是買更多是什麼時候可以賣出 有一位朋友,他說他的股票在最近的一波漲了蠻多的決定要賣出了 我就說「太好了,大概賺了多少」 他說「賺了約 5 %,但是最多的時候,有賠到了30%」 而在剛解套的時候,他覺得有賺就好了 漲高是否就要獲利了解呢
Thumbnail
前言 在股票市場中,選擇何時進場往往是獲取成功的關鍵。本系列文透過數據統計的方式,從月、周、日三個維度探索最佳的買進時機。讓我們一同深入瞭解,如何在市場的波動中精確制定買進策略,以獲得更為優異的投資回報。 實驗方式 這一篇會先聚焦在月週期上,分別統計每個月1號~31號所有股票的5日
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
操作ETF的兩難就在於 什麼時候要買進? 什麼時候要賣出? 買太早套住怎麼辦? 賣太早空手怎麼辦? 教練的挖寶操作可以解決上述問題!!
Thumbnail
一般人會想像一個完美的時機點、完美的價位,在剛剛好對的時間賣出股票,可以獲利又沒有錯失行情,但這個完美時機點位並不存在,實際是追高殺低還更容易、更符合人性,要買最低賣最高,應該比中樂透還難。
Thumbnail
大家好,我是小畢,在投資的路上,投資人都希望在股價低時買進,在股價高時賣出獲得報酬,正因為如此,就必須準確地預測何時是低點,以及何時是高點。 有些投資人會採用技術分析,利用各種技術指標來判斷低點和高點,例如移動平均線指標,當股價高於移動平均線時買進,股價低於移動平均線時賣出,而有的投資人則是採
Thumbnail
題目敘述 題目會給我們一個StockSpanner類別, 還有對應的建構子和function: int next( int price)介面。 next(int price)呼叫的時後回傳入當天的股票價格,要求我們計算price這個價格是過去k天以來的最高價,返回k值。 舉例來說: 若股價分
Thumbnail
買賣股票一直都是一門高深的學問,何時買才是好時機?何時賣才是好時機? 上面這個問題, 10個人有10個答案, 100個人有100個答案,有的人答案是自己找出來的,有的人的答案是參考別人的,在寫出自己的,有的人的答案是抄別人的,但怎樣的答案才是對或錯呢?   說真的,我到現在
Thumbnail
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
Thumbnail
在股票市場,若要能大幅的獲利,關鍵應該不是買更多是什麼時候可以賣出 有一位朋友,他說他的股票在最近的一波漲了蠻多的決定要賣出了 我就說「太好了,大概賺了多少」 他說「賺了約 5 %,但是最多的時候,有賠到了30%」 而在剛解套的時候,他覺得有賺就好了 漲高是否就要獲利了解呢
Thumbnail
前言 在股票市場中,選擇何時進場往往是獲取成功的關鍵。本系列文透過數據統計的方式,從月、周、日三個維度探索最佳的買進時機。讓我們一同深入瞭解,如何在市場的波動中精確制定買進策略,以獲得更為優異的投資回報。 實驗方式 這一篇會先聚焦在月週期上,分別統計每個月1號~31號所有股票的5日