LeetCode 901. 股票价格跨度(单调栈)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 901. 股票价格跨度(单调栈)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
編寫一個 StockSpanner 類,它收集某些股票的每日報價,并返回該股票當日價格的跨度。
今天股票價格的跨度被定義為股票價格小于或等于今天價格的最大連續日數(從今天開始往回數,包括今天)。
例如,如果未來7天股票的價格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度將是 [1, 1, 1, 2, 1, 4, 6]。
示例: 輸入:["StockSpanner","next","next","next","next","next","next","next"], [[],[100],[80],[60],[70],[60],[75],[85]] 輸出:[null,1,1,1,2,1,4,6] 解釋: 首先,初始化 S = StockSpanner(),然后: S.next(100) 被調用并返回 1, S.next(80) 被調用并返回 1, S.next(60) 被調用并返回 1, S.next(70) 被調用并返回 2, S.next(60) 被調用并返回 1, S.next(75) 被調用并返回 4, S.next(85) 被調用并返回 6。注意 (例如) S.next(75) 返回 4,因為截至今天的最后 4 個價格 (包括今天的價格 75) 小于或等于今天的價格。提示: 調用 StockSpanner.next(int price) 時,將有 1 <= price <= 10^5。 每個測試用例最多可以調用 10000 次 StockSpanner.next。 在所有測試用例中,最多調用 150000 次 StockSpanner.next。 此問題的總時間限制減少了 50%。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/online-stock-span
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 單調棧,棧內存儲《數值,小于等于其的個數》
- 如果當前 price >= 棧頂,把計數累積,彈棧,直到遇到比當前大的,停止
總結
以上是生活随笔為你收集整理的LeetCode 901. 股票价格跨度(单调栈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 747. 至少是其他数
- 下一篇: 程序员面试金典 - 面试题 17.24.