建设了网站怎么管理系统,设计用哪些网站,微信小程序是干什么用的,建网站那家好自己思路#xff1a;
想到用两个栈#xff0c;一个维护元素、另一个维护下标。但是还是无法处理有重复元素的问题#xff08;用哈希表来存储的时候#xff09;。所以就看了答案的思路。 答案思路#xff1a;
从前往后遍历#xff0c;维护一个单调栈。栈存放数组的下标。…自己思路
想到用两个栈一个维护元素、另一个维护下标。但是还是无法处理有重复元素的问题用哈希表来存储的时候。所以就看了答案的思路。 答案思路
从前往后遍历维护一个单调栈。栈存放数组的下标。
①栈为空 or 当前下标元素 栈顶元素入栈
②当前下标元素 栈顶元素就出栈并计算它们的下标之差存入到这个出栈元素对应的数组里面。 代码
class Solution {
public:vectorint dailyTemperatures(vectorint temperatures) {int n temperatures.size();vectorint ans(n); // 设置存放当前下标温度之后的几天可以遇到高温度stackint st; // 单调栈用来存放元素下标int i 0;while( i ! temperatures.size()) {int t temperatures[i]; // 获取当前下标元素// 如果栈为空 or t 栈顶元素就入栈并把指针后移if(st.empty() || t temperatures[st.top()]){st.push(i);i;}// 如果 t栈顶元素那么就是栈顶这个温度找到了比它高的温度出栈栈顶元素并计算它们之间的间隔天数存入到与栈顶元素相关的数组中。else if (t temperatures[st.top()]) {int loc st.top();st.pop();ans[loc] i - loc;}}return ans;}
};
运行结果