已解决
股票价格跨度
来自网友在路上 166866提问 提问时间:2023-10-22 18:48:40阅读次数: 66
最佳答案 问答题库668位专家为你答疑解惑
问题:
设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。
当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。
-
例如,如果未来 7 天股票的价格是
[100,80,60,70,60,75,85]
,那么股票跨度将是[1,1,1,2,1,4,6]
。
实现 StockSpanner
类:
StockSpanner()
初始化类对象。int next(int price)
给出今天的股价price
,返回该股票当日价格的 跨度 。
示例:
输入: ["StockSpanner", "next", "next", "next", "next", "next", "next", "next"] [[], [100], [80], [60], [70], [60], [75], [85]] 输出: [null, 1, 1, 1, 2, 1, 4, 6]解释: StockSpanner stockSpanner = new StockSpanner(); stockSpanner.next(100); // 返回 1 stockSpanner.next(80); // 返回 1 stockSpanner.next(60); // 返回 1 stockSpanner.next(70); // 返回 2 stockSpanner.next(60); // 返回 1 stockSpanner.next(75); // 返回 4 ,因为截至今天的最后 4 个股价 (包括今天的股价 75) 都小于或等于今天的股价。 stockSpanner.next(85); // 返回 6
思想:
单调栈,每当调用next函数时将当日价格的股票和往日的比较,大于等于当日的股票推出栈。
代码:
class StockSpanner {Stack<int[]> st;int index;public StockSpanner() {st = new Stack<>();index = -1;st.push(new int[]{index,Integer.MAX_VALUE});}public int next(int price) {index++;int ret = 1;while(price >= st.peek()[1]){st.pop();}ret = index - st.peek()[0];st.push(new int[]{index,price});return ret; }
}/*** Your StockSpanner object will be instantiated and called as such:* StockSpanner obj = new StockSpanner();* int param_1 = obj.next(price);*/
查看全文
99%的人还看了
相似问题
- 121. 买卖股票的最佳时机 --力扣 --JAVA
- 股票基础数据(二)
- 代码随想录算法训练营第四十九天| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
- 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)
- 代码随想录算法训练营第四十八天|121. 买卖股票的最佳时机 122.买卖股票的最佳时机II
- 机器学习股票大数据量化分析与预测系统 - python 计算机竞赛
- 动态规划30(Leetcode123买股票的最佳时机3)
- 动态规划29(Leetcode714买卖股票的最佳时期含手续费)
- Leetcode121买股票的最佳时机
- Leetcode122买股票的最佳时机2
猜你感兴趣
版权申明
本文"股票价格跨度":http://eshow365.cn/6-21850-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!