当前位置:   article > 正文

Day50- 单调栈part01

Day50- 单调栈part01

一、每日温度

题目一:739. 每日温度

739. 每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替

如果明天的温度比今天高,那么栈顶的元素就可以出栈。栈内保存的是索引,栈顶的元素是当前未被高温度覆盖的最近的一天。

  1. class Solution {
  2. public:
  3. vector<int> dailyTemperatures(vector<int>& temperatures) {
  4. int n = temperatures.size();
  5. vector<int> answer(n);
  6. stack<int> s;
  7. for(int i = 0; i < n; ++i){
  8. while(!s.empty() && temperatures[s.top()] < temperatures[i]){
  9. int preIndex = s.top();
  10. answer[preIndex] = i - preIndex;
  11. s.pop();
  12. }
  13. s.push(i);
  14. }
  15. while(!s.empty()){
  16. answer[s.top()] = 0;
  17. s.pop();
  18. }
  19. return answer;
  20. }
  21. };

二、下一个更大元素 I

题目一:496. 下一个更大元素 I

496. 下一个更大元素 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] 是如上所述的 下一个更大元素 。

创建一个映射用于存储nums2中每个数的下一个更大元素,然后再用创建的映射查找nums1中元素的下一个更大元素。

  1. class Solution {
  2. public:
  3. vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
  4. unordered_map<int, int> numToNextGreater;
  5. stack<int> nextGreaterStack;
  6. for(int num : nums2){
  7. while(!nextGreaterStack.empty() && nextGreaterStack.top() < num){
  8. numToNextGreater[nextGreaterStack.top()] = num;
  9. nextGreaterStack.pop();
  10. }
  11. nextGreaterStack.push(num);
  12. }
  13. while(!nextGreaterStack.empty()){
  14. numToNextGreater[nextGreaterStack.top()] = -1;
  15. nextGreaterStack.pop();
  16. }
  17. vector<int> answer(nums1.size());
  18. for(int i = 0; i < nums1.size(); ++i){
  19. answer[i] = numToNextGreater[nums1[i]];
  20. }
  21. return answer;
  22. }
  23. };

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/87210
推荐阅读
相关标签
  

闽ICP备14008679号