首页 > 其他分享 >leetcode496-下一个更大元素I——单调栈解决下一个更大元素问题

leetcode496-下一个更大元素I——单调栈解决下一个更大元素问题

时间:2022-09-04 12:23:08浏览次数:60  
标签:int res 元素 leetcode496 更大 nums1 nums2 size

 

https://leetcode.cn/problems/next-greater-element-i/

方法一:暴力

vector<int> res;int size1=nums1.size(),size2=nums2.size();         for(int i=0;i<size1;i++)         {             int tempj;bool flag=false;             for(int j=0;j<size2;j++)             {                 if(nums1[i]==nums2[j]&&!flag)                 {                     tempj=j;flag=true;continue;                 }                 if(flag&&nums2[j]>nums2[tempj])                 {                     res.push_back(nums2[j]);break;                 }             }             if(i==res.size())   res.push_back(-1);         }         return res; 方法二:单调栈 暴力解法的时间复杂度为o(n^2),对于nums1中的每一个数都要重复地遍历nums2数组,造成了很多不必要的时间开销。 使用一个哈希表记录nums2中每一个元素的下一个更大值,然后只需要遍历一次nums1数组就立刻知道对应nums2数组中的下一个更大值 https://leetcode.cn/problems/next-greater-element-i/solution/dan-diao-zhan-jie-jue-next-greater-number-yi-lei-w/ 把数组中的元素当成是身高不同的人,某数的下一个更大值就是第一个遮挡右边视线的数

 

 

 

 

       int size1=nums1.size(),size2=nums2.size();         stack<int> bigger;         unordered_map<int,int> number_map;         vector<int> res;//返回结果         for(int i=size2-1;i>=0;i--)         {             while(!bigger.empty()&&bigger.top()<=nums2[i])             {                 bigger.pop();             }             number_map.emplace(nums2[i],bigger.empty()?-1:bigger.top());             bigger.push(nums2[i]);         }         for(int i=0;i<size1;i++)         {             res.push_back(number_map[nums1[i]]);         }         return res;

 

标签:int,res,元素,leetcode496,更大,nums1,nums2,size
From: https://www.cnblogs.com/uacs2024/p/16654827.html

相关文章

  • 数组元素循环右移n位
    7-4数组元素循环右移n位分数15作者周永单位西南石油大学从键盘接收两个整数m和n,分别表示一维整型数组的元素个数,和要向移动的位数。已知0<m<=100,以及n>0。在用户......
  • Leetcode — 34. 查找有序数组中元素的第一个和最后一个位置
    Leetcode—34.查找有序数组中元素的第一个和最后一个位置题目:查找排序数组中元素的第一个和最后一个位置难度:medium语言:Python中文题意:给一串以递增排序的整数......
  • 主元素问题与摩尔投票法、格雷码
    一堆小玩意,放到一起。题意:给定一个n个元素数列,保证有一个数\(a\)的出现次数超过\(\lfloor\fracn2\rfloor\),求这个数。数据范围\(n<=3000000,a_i\le2147483647,\)时限0.......
  • JQuery——动态添加元素导致点击事件失效
    前言因为博皮当前版本有人反馈文章中标题导航点击无法生成;jquery-click-invalid:https://codesandbox.io/s/jquery-click-invalid-forked-xpt352内容一开始我以为......
  • 栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导
    栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导前言:重在记录,可能出错。这部分内容借鉴了网络上的一些内容。如:什么是卡特兰数?和怎么理......
  • 6-5 求自定类型元素的最大值——10分
    本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType。函数接口定义:ElementTypeMax(ElementTypeS[],intN);其中给定集合元......
  • 6-4 求自定类型元素的平均——10分
    本题要求实现一个函数,求N个集合元素S[]的平均值,其中集合元素的类型为自定义的ElementType。函数接口定义:ElementTypeAverage(ElementTypeS[],intN);其中给定集合......
  • Problem P05. [算法课分治] 寻找第 k 个最大元素
    先sort进行排序,然后输出第k大的元素即可#include<iostream>#include<bits/stdc++.h>#include<cstdio>usingnamespacestd;intn,k;intarr[10005];intmain......
  • 移除链表元素
    移除链表元素难度简单1013收藏分享切换为英文接收动态反馈给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点......
  • CSS美化网页元素
    3.美化网页元素3.1为什么要美化网页1.有效的传递页面信息2.美化网页,页面漂亮才能吸引用户3.凸显页面的主题4.提高用户的体验 span标签:重点要突出的字使用span标签......