[leetcode] 739. Daily Temperatures
来源:互联网 发布:为知笔记 微博收藏 编辑:程序博客网 时间:2024/06/07 02:50
Question:
Given a list of daily temperatures, produce a list that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.
For example, given the list temperatures = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].
Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].
Solution:
想了一会想到了栈,一开始想的是放入栈中的是下标和数值,因此想弄一个新的结构体放这两个值,后来AC后看到别人只用下标,不禁怀疑自己的智商。
大概的思路是,维护一个栈,栈中放着的元素数值大小自栈顶往下递增,而且栈中的元素都是未找到更大的数的元素。初始化时栈中放着第一个元素。然后遍历数组,遇到一个数后,将这个数与栈顶比较,如果比栈顶大,则为栈顶的元素找到了一个更大的数,可以弹出,不断弹出知道当前的数比栈顶的数大或相等。这样就能得到最终答案。
class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { stack<int> st; vector<int> ret(temperatures.size(), 0); if (temperatures.size() == 0) return ret; st.push(0); for (int i = 1; i < temperatures.size(); i++) { while (!st.empty() && temperatures[st.top()] < temperatures[i]) { ret[st.top()] = i - st.top(); st.pop(); } st.push(i); } return ret; }};
- [leetcode] 739. Daily Temperatures
- Leetcode 739. Daily Temperatures
- LeetCode刷题 | 739. Daily Temperatures
- leetcode weekly contest 61(739. Daily Temperatures)
- leetcode:739. Daily Temperatures 单调栈
- LeetCode.739 Daily Temperatures
- 739. Daily Temperatures
- 739. Daily Temperatures
- 739. Daily Temperatures
- LWC 61:739. Daily Temperatures
- Daily Temperatures问题及解法
- Daily
- CodinGame: Temperatures 反思
- English daily
- Daily Meeting
- Daily word
- DAILY BUILD
- daily report
- 056day(可变长整型数组的实现)
- 输入5个数字,如果数组中有0则0可以替代任何数字,判断该数组中的数字是否是连续数字。
- 十二月新阶段的备战春招安排计划
- 浮点数的存储,判断大小端,汇编指令,if和swith
- 文章标题
- [leetcode] 739. Daily Temperatures
- Python3 学习杂记
- 【MapReduce实例】数据去重
- 枚举,注解
- [日常记录]2017-12-05
- spring task的详细使用
- 求最小值 HNUST 1874(DFS模板)
- Codeforces-86D:Powerful array(莫队算法)
- CentOS 7安装npm和cnpm