leetcode weekly contest 61(739. Daily Temperatures)
来源:互联网 发布:条码追溯软件 编辑:程序博客网 时间:2024/05/22 00:29
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].
题目
说给我们一堆天气温度
找到之后的第几天第一次比这天温度高
没找到填0
分析
先思考暴力 n平方的复杂度 , 很好写 , 就枚举即可
接着说n*logn 那么可以用线段树 倒着维护 , 不过代码较为复杂
最后说线性的复杂度 我们用单调队列维护( 一个单调递减的队列)
首先我们知道 如果有一天比前一天低那么他对于前面的温度而言是没有什么用的 , 即 tem[i-1] > tem[i] 》》如果小于i-1的天数]小于tem[i-1]那么tem[i-1]在tem[i]前生效 , 大于tem[i-1]那么tem[i]同样没有用
代码
class Solution {public: vector<int> dailyTemperatures(vector<int>& temperatures) { vector< int > ans ; if( temperatures.size() == 0 ) return ans ; deque< int > dlist; deque< int > index ; ans.resize( temperatures.size() , 0 ) ; for( int i=0 ; i<temperatures.size() ; i++){ if( dlist.size() == 0 ){ dlist.push_back( temperatures[i] ) ; index.push_back( i ); } else{ if( temperatures[i] <= dlist.back() ){ dlist.push_back( temperatures[i] ) ; index.push_back( i ) ; } else{ while( dlist.size() && dlist.back() < temperatures[i]) { int target = index.back() ; ans[target] = i - index.back() ; index.pop_back() ; dlist.pop_back() ; } dlist.push_back(temperatures[i]); index.push_back( i ) ; } } } return ans ; }};
时间复杂度 O(n) 因为每个元素出队列一次进队列一次
空间复杂度 O(n)
- leetcode weekly contest 61(739. Daily Temperatures)
- [leetcode] 739. Daily Temperatures
- Leetcode 739. Daily Temperatures
- LeetCode刷题 | 739. Daily Temperatures
- LWC 61:739. Daily Temperatures
- leetcode:739. Daily Temperatures 单调栈
- LeetCode.739 Daily Temperatures
- 739. Daily Temperatures
- 739. Daily Temperatures
- 739. Daily Temperatures
- LeetCode Weekly Contest 25
- leetcode weekly contest #26
- leetcode weekly contest #27
- LeetCode Weekly Contest 28
- LeetCode Weekly Contest 30
- LeetCode Weekly Contest 39
- LeetCode Weekly Contest 47
- LeetCode Weekly Contest 51
- 求二叉树指定节点的深度
- sql server 数据库导出表里所有数据成insert 语句
- Multi-task Learning
- OpenGL超级宝典第五版 Windows + VS2013配置
- UGUI Text首行缩进取巧办法
- leetcode weekly contest 61(739. Daily Temperatures)
- 百度地图------百度infowindow重影问题记录我的
- URAL 1057 (数位dp)
- openCV学习笔记(四)--图像的几何变换Geometric Transformations of Images
- 之前在JVM菜鸟进阶高手之路
- entrySet keySet
- 三分钟了解Activity工作流
- 负载均衡器技术Nginx和F5的优缺点
- php中var_export与var_dump的区别分析