电子鲜花php网站怎么做,wordpress图片怎么并排显示图片,网站设计论文结束语,网站上微信的链接怎么做#includestack --栈的头文件 栈的特点 #xff1a; 先进后出 #xff0c; 后进先出 相关函数#xff1a; top() 获取栈顶元素 ,返回栈顶元素的值 pop() 删除栈顶元素 ,没有返回值 push() 放入元素 ,没有返回值 empty() 为空返回 true 否则返回false size() 元素… #includestack --栈的头文件 栈的特点 先进后出 后进先出 相关函数 top() 获取栈顶元素 ,返回栈顶元素的值 pop() 删除栈顶元素 ,没有返回值 push() 放入元素 ,没有返回值 empty() 为空返回 true 否则返回false size() 元素的个数 ,返回值为 无符号整型 语法 stackint stk; //创建一个栈里面的元素是int类型 739. 每日温度https://leetcode.cn/problems/daily-temperatures/ 提示 给定一个整数数组 temperatures 表示每天的温度返回一个数组 answer 其中 answer[i] 是指对于第 i 天下一个更高温度出现在几天后。如果气温在这之后都不会升高请在该位置用 0 来代替。 思路 单调栈单调栈使用的场景左边或者右边第一个比他大或者小的。 创建一个栈遍历数组将第一个元素放入栈每个元素与栈顶比较当栈不为空且找到后面比栈顶大的一个元素将栈顶元素弹出然后利用下标返回数组对应的元素 class Solution {
public:vectorint dailyTemperatures(vectorint temp) {stackintstk;vectorintres(temp.size(),0); stk.push(0); for(int i1;itemp.size();i){while(!stk.empty()temp[i]temp[stk.top()]){res[stk.top()]i-stk.top();stk.pop();}stk.push(i);//不执行循环和循环结束都执行}return res;}
}; 496. 下一个更大元素 Ihttps://leetcode.cn/problems/next-greater-element-i/ nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 下标从 0 开始计数其中nums1 是 nums2 的子集。 对于每个 0 i nums1.length 找出满足 nums1[i] nums2[j] 的下标 j 并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素那么本次查询的答案是 -1 。 返回一个长度为 nums1.length 的数组 ans 作为答案满足 ans[i] 是如上所述的 下一个更大元素 。 思路 这个解法通过栈和哈希表来寻找nums1中每个元素在nums2中的下一个更大元素。首先使用哈希表记录nums1中每个元素的位置。然后遍历nums2利用栈来寻找每个元素右侧的第一个更大元素。如果当前元素大于栈顶元素则找到了栈顶元素的下一个更大元素此时更新结果数组。通过这种方式能够高效地为nums1中的每个元素找到其在nums2中的下一个更大元素如果不存在则结果为-1。 class Solution {
public:vectorint nextGreaterElement(vectorint nums1, vectorint nums2) {stackintstk;mapint,intm;stk.push(0);for(int i0;inums1.size();i){m[nums1[i]]i;}vectorintres(nums1.size(),-1);for(int i1;inums2.size();i){//栈不为空 并且nums2[i]nums2[stk[top]]//说明stk.pop()这个位置找到了下一个更大元素 while(!stk.empty()nums2[i]nums2[stk.top()]){if(m.find(nums2[stk.top()])!m.end()) {//m[nums2[stk.top()]]代表的是nums2[stk.top()]在nums1中的下标res[m[nums2[stk.top()]]]nums2[i];}stk.pop();//不管这个元素是不是nums1中的都要弹出否则会卡在这}stk.push(i);}return res;}
};