凡科建站建网站,建论坛网站需要多少空间,网站超市源码哪个好,电脑视频制作软件给定一个整数数组 temperatures #xff0c;表示每天的温度#xff0c;返回一个数组 answer #xff0c;其中 answer[i] 是指对于第 i 天#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高#xff0c;请在该位置用 0 来代替。
示例 1: 输入: temperatu…给定一个整数数组 temperatures 表示每天的温度返回一个数组 answer 其中 answer[i] 是指对于第 i 天下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用 0 来代替。
示例 1: 输入: temperatures [73,74,75,71,69,72,76,73] 输出: [1,1,4,2,1,1,0,0] 示例 2: 输入: temperatures [30,40,50,60] 输出: [1,1,1,0] 示例 3: 输入: temperatures [30,60,90] 输出: [1,1,0] 提示 1 t e m p e r a t u r e s . l e n g t h 1 0 5 1 temperatures.length 10^5 1temperatures.length105 30 t e m p e r a t u r e s [ i ] 100 30 temperatures[i] 100 30temperatures[i]100 思路单调栈
反向遍历数组通过单调栈找出当前元素右边比当前元素大的切最近的元素记录其下标这个下标 减 当前下标就是结果右边第几个比它大
class Solution {
public:stackint stk;vectorint dailyTemperatures(vectorint t) {int n t.size();vectorint res;for(int i n - 1; i 0; i--){while(!stk.empty() t[stk.top()] t[i]) stk.pop();if(stk.empty()) res.push_back(0);else res.push_back(stk.top() - i);stk.push(i);}reverse(res.begin(), res.end());return res;}
};