首页 前端知识 力扣-单调栈-739 每日温度

力扣-单调栈-739 每日温度

2025-03-15 13:03:17 前端知识 前端哥 262 227 我要收藏

思路和时间复杂度

  1. 思路:要求找出第一个大的元素,因此从左往右找到比栈顶大的元素就收集结果并且更新栈,弹出栈顶,如果是小于等于栈的元素,就入栈,因为跟所求的元素没什么关系,此时栈内从栈顶到栈底是单调递增的
  2. 时间复杂度: O(n)      

代码

class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> res(temperatures.size(), 0);
stack<int> st;
st.push(0);
for(int i = 1; i < temperatures.size(); i++){
if(temperatures[i] < temperatures[st.top()]){
st.push(i);
}else if(temperatures[i] == temperatures[st.top()]){
st.push(i);
}else{
while(!st.empty() && temperatures[i] > temperatures[st.top()]){
res[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
}
return res;
}
};
复制

转载请注明出处或者链接地址:https://www.qianduange.cn//article/23793.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!