下一个更大的元素

#include<iostream>
#include<vector>
#include<stack>
#include<unordered_map>
using namespace std;

// 下一个更大元素

// 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。
// 请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。
// nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应
// 位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。

// 示例 1:
// 输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
// 输出: [-1,3,-1]

class Solution{
    public:
        vector<int> nextGreaterElement(vector<int>& nums1,vector<int>& nums2){
          stack<int> st;
          vector<int> result(nums1.size(),-1);
          if(nums1.size()==0)return result;
          unordered_map<int,int> umap;
          for(int i=0;i<nums1.size();i++){
              umap[nums1[i]]=i;
          }
          st.push(0);
          for(int i=1;i<nums2.size();i++){
              if(nums2[i]<nums2[st.top()]){
                  st.push(i);
              }else if(nums2[i]==nums2[st.top()]){
                  st.push(i);
              }else{
                  while(!st.empty()&&nums2[i] > nums2[st.top()]){
                      if(umap.count(nums2[st.top()]>0)){
                          int index=umap[nums2[st.top()]];
                          result[index]=nums2[i];
                      }
                      st.pop();
                  }
                  st.push(i);
              }
          }
          return result;

        }
};

int main(){
    return 0;
}

原文链接: https://www.cnblogs.com/codingggo/p/17035848.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    下一个更大的元素

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/310741

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午11:43
下一篇 2023年2月16日 上午11:43

相关推荐