付費限定

用 單調棧 來解 最近幾日股價的高點 Online Stock Span_Leetcode #901精選75題

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

題目敘述

題目會給我們一個StockSpanner類別,
還有對應的建構子和function: int next( int price)介面。

next(int price)呼叫的時後回傳入當天的股票價格,要求我們計算price這個價格是過去k天以來的最高價,返回k值。

舉例來說:

若股價分別是[70, 50, 60]

則分別回傳1, 1, 2

70是過去一天以來{70}的最高價

50是過去一天以來{50}的最高價

60是過去兩天以來{50, 60}的最高價


題目的原文敘述


測試範例

Example 1:

Input
["StockSpanner", "next", "next", "next", "next", "next", "next", "next"]
[[], [100], [80], [60], [70], [60], [75], [85]]
Output
[null, 1, 1, 1, 2, 1, 4, 6]

Explanation
StockSpanner stockSpanner = new StockSpanner();
stockSpanner.next(100); // return 1
stockSpanner.next(80); // return 1
stockSpanner.next(60); // return 1
stockSpanner.next(70); // return 2
stockSpanner.next(60); // return 1
stockSpanner.next(75); // return 4, because the last 4 prices (including today's price of 75) were less than or equal to today's price.
stockSpanner.next(85); // return 6

約束條件

Constraints:

  • 1 <= price <= 10^5

參數price介於1~十萬之間。

  • At most 10^4 calls will be made to next.

動態測試時,最多有一萬次next() function呼叫。


演算法 Monotone Stack 單調棧


其實這題和前一題 每日溫度變化 Daily Temperatures 有異曲同工之妙,前一題是找之後比較大的值(之後比較溫暖的日子)這題是找能覆蓋前k天以來的數值(相當於說,今天的股價,是k天以來的最高點),背後的本值都時一樣的,都是盡可能的擴張區間,直到條件滿足為止


維護一個遞減單調棧,每次呼叫next() function推入今天股價時,把前面比較小的價格都pop出來,並且趁機計算能夠覆蓋的天數k值最後再把k值回傳即可。


範例 + 示意圖

以行動支持創作者!付費即可解鎖
本篇內容共 2570 字、1 則留言,僅發佈於Leetcode精選75題 解析+統整你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
92會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
題目敘述 題目會給我們泰伯納西數列的一般項和初始條件,要求我們實現找出第n項的function。 def tribonacci(self, n: int): 泰伯納西數列的一般項: Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. 泰伯納西數列的初始條件: T0 = 0,
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^
題目敘述 給定兩個字串word1和word2,每次操作時,可以有三個選項 插入一個字元 刪除一個字元 替換一個字元 請問把word1轉換成word2的最小操作次數是多少? 題目的原文敘述 約束條件 Constraints: 0 <= word1.length, word2.le
題目敘述 題目會給我們兩種無限量供應的骨牌Domino 和 Tromino,形狀分別如下 題目的輸入會有一個參數n。 可以任意旋轉方向進行拼接,請問最後拼成 2 x n 長方形區域的方法數有幾種? 例如 n = 3 時,拼成2 x 3 的長方形區域有五種方法。 題目的原文敘述
題目敘述 題目會給我們一個大樓陣列heights,裡面分別記錄每一棟大樓的高度。還有參數bricks代表可用的磚塊數目,和 ladders代表可用的伸縮爬梯數目。 一開始從最左邊的大樓頂樓開始出發。 假如下一棟比現在這棟大樓還矮,或者一樣高,則我們可以直接抵達下一棟。 假如下一棟比現在
題目敘述 題目會給我們一個陣列prices,裡面的數值代表每一個交易日的股票股價。 每次買入股票時會有一個額外附帶的交易成本fee。 題目讓我們做多,而且不限制交易次數。 題目禁止持有多重部位,也就是說,必須是買賣輪流交替的形式。 比如說 買,買,買 這種方式是不被允許的。 請問最終
題目敘述 題目會給我們泰伯納西數列的一般項和初始條件,要求我們實現找出第n項的function。 def tribonacci(self, n: int): 泰伯納西數列的一般項: Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. 泰伯納西數列的初始條件: T0 = 0,
你可能也想看
Google News 追蹤
Thumbnail
本文以戀愛為比喻,深入淺出地探討投資哲學,提醒讀者投資需理性評估,不可盲目跟風,並強調投資自己才是最穩健的選擇。
2025/01/16 市場消息解讀:COWOS 訂單調整的影響與背景分析 COWOS 訂單調整的真相 近期市場傳出 NVIDIA 調整 COWOS 訂單的消息,但需要具體分析這一訂單背後的意涵。目前的調整應主要針對 COWOS S,且描述為“砍單”可能並不完全準確。調整的實質是 COWOS S
Thumbnail
本篇文章分享我在股癌Podcast中學到的投資心得,並涵蓋新年股市觀察、個人成長反思、以及對NVIDIA COWOS訂單調整、挖礦機產業、美債殖利率、美國AI算力禁令等市場消息的深入分析與解讀。
Thumbnail
加入免費👉Discord群組接收每日市場要聞、經濟數據和文章更新通知。
Thumbnail
加入免費👉Discord群組接收每日市場要聞、經濟數據和文章更新通知。
Thumbnail
李明是一個敏感而內向的年輕人,他一直害怕付出真心去愛一個人。他曾經經歷過一段痛苦的感情,對方在他毫無防備的時候突然消失,讓他陷入了深深的孤獨和傷痛之中。   然而,命運似乎總是喜歡和他開玩笑。在一次偶然的機會裡,李明遇到了一位叫林婷的女孩。她溫柔善良、聰明伶俐,兩人很快就成為了好朋友。隨
Thumbnail
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^
Thumbnail
本文以戀愛為比喻,深入淺出地探討投資哲學,提醒讀者投資需理性評估,不可盲目跟風,並強調投資自己才是最穩健的選擇。
2025/01/16 市場消息解讀:COWOS 訂單調整的影響與背景分析 COWOS 訂單調整的真相 近期市場傳出 NVIDIA 調整 COWOS 訂單的消息,但需要具體分析這一訂單背後的意涵。目前的調整應主要針對 COWOS S,且描述為“砍單”可能並不完全準確。調整的實質是 COWOS S
Thumbnail
本篇文章分享我在股癌Podcast中學到的投資心得,並涵蓋新年股市觀察、個人成長反思、以及對NVIDIA COWOS訂單調整、挖礦機產業、美債殖利率、美國AI算力禁令等市場消息的深入分析與解讀。
Thumbnail
加入免費👉Discord群組接收每日市場要聞、經濟數據和文章更新通知。
Thumbnail
加入免費👉Discord群組接收每日市場要聞、經濟數據和文章更新通知。
Thumbnail
李明是一個敏感而內向的年輕人,他一直害怕付出真心去愛一個人。他曾經經歷過一段痛苦的感情,對方在他毫無防備的時候突然消失,讓他陷入了深深的孤獨和傷痛之中。   然而,命運似乎總是喜歡和他開玩笑。在一次偶然的機會裡,李明遇到了一位叫林婷的女孩。她溫柔善良、聰明伶俐,兩人很快就成為了好朋友。隨
Thumbnail
題目會給定一個輸入陣列temperatures ,分別代表每一天的溫度。 請計算每一天還要再過幾天才會遇到更溫暖的日子,如果遇不到,則回填0。 請以陣列的形式返回答案。 題目的原文敘述 約束條件 Constraints: 1 <= temperatures.length <= 10^