代码:
class Solution { public: vector<int> dailyTemperatures(vector<int>& T) { int length = int(T.size()); vector<int>result(length,0); //需要指定长度 stack<int>st; for (int i = 0;i<length;++i) { while(!st.empty()&&T[i]>T[st.top()]) { auto t = st.top();st.pop();//要求的当天温度之前的数量 要求的温度在数组中的位置 result[t] = i-t; //当前的数量为比他大的 间隔 } st.push(i); } return result; } };
算法复杂度
算法复杂度是 O(n)O(n)
相关题目推荐
利用堆栈,还可以解决如下常见问题:
求解算术表达式的结果(LeetCode 224、227、772、770)
求解直方图里最大的矩形区域(LeetCode 84)