Day 57 代码随想录 单调栈

文章目录

  • 739. 每日温度
  • 496. 下一个更大元素 I


739. 每日温度

   题目链接:739. 每日温度
Day 57 代码随想录 单调栈_第1张图片

 

class Solution(object):
    def dailyTemperatures(self, temperatures):
        """
        :type temperatures: List[int]
        :rtype: List[int]
        """
        res=[0]*len(temperatures)
        stack=[0]
        for i in range(1,len(temperatures)):
            if temperatures[i]<=temperatures[stack[-1]]:#小于等于栈顶元素
                stack.append(i)
            else:
                while len(stack)!=0 and temperatures[i]>temperatures[stack[-1]]:
                    res[stack[-1]]=i-stack[-1]
                    stack.pop()
                stack.append(i)
        return res

弹出后需要判断栈不为空,然后再继续执行。

496. 下一个更大元素 I

   题目链接:496. 下一个更大元素 I
Day 57 代码随想录 单调栈_第2张图片

 

class Solution(object):
    def nextGreaterElement(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        res=[-1]*len(nums1)
        stack=[0]
        for i in range(1,len(nums2)):
            if nums2[i]<=nums2[stack[-1]]:
                stack.append(i)
            else:
                while len(stack)!=0 and nums2[i]>nums2[stack[-1]]:#要弹出
                    if nums2[stack[-1]] in  nums1:
                        index=nums1.index(nums2[stack[-1]])
                        res[index]=nums2[i]
                    stack.pop()
                stack.append(i)
        return res

要弹出的时候记录下,这是关键。

你可能感兴趣的:(算法训练营,leetcode,算法,职场和发展)