当前位置:   article > 正文

496.下一个更大元素

496.下一个更大元素

在这里插入图片描述
1.分析题目:
a.对应位置右侧的第一个比x大的元素----->单调栈
b.两个没有重复元素的数组 nums1 和 nums2—>无重复,可以通过建立map代替双重循环解决问题
这里这个map思维之前并未建立,
可以通过单重循环,在循环过程中判断map中是否含有另一个数组的元素,解决问题。
情况一:当前遍历的元素T[i]小于或等于栈顶元素T[st.top()]的情况

情况二:当前遍历的元素T[i]大于栈顶元素T[st.top()]的情况
此时如果入栈就不满足递增栈了,这也是找到右边第一个比自己大的元素的时候。

判断栈顶元素是否在nums1里出现过,(注意栈里的元素是nums2的元素),如果出现过,开始记录结果。

2.和上一个温度不同点:
a.两个数组更加麻烦一些,需要建立map
b.需要判断是否在另一个数组中—>进而判断是否需要记录结果

代码展示

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        map={}
        result=[-1]*len(nums1)
        stack=[]
        for i in range(len(nums1)):
            if nums1[i] in nums2:
                map[nums1[i]]=i
        for i in range(len(nums2)):
            if len(stack)==0 or nums2[i]<=nums2[stack[-1]]:
                stack.append(i)
            while len(stack)!=0 and nums2[i]>nums2[stack[-1]]:
                if nums2[stack[-1]] in map:
                    result[map[nums2[stack[-1]]]]= nums2[i]
                stack.pop()
            stack.append(i)
        return result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/616764
推荐阅读
相关标签
  

闽ICP备14008679号