leetcode 503 下一个最大元素2

这次是循环数组,所以属于一共遍历两次,第一次到了结尾,把i置为0,继续遍历。

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        result=[-1 for _ in range(len(nums))]
        stack=[]
        count=0
        flag=False
        i=0
        while i<len(nums):              
            while stack and nums[stack[-1]]<nums[i]:
                s=stack[-1]
                print(s)
                stack=stack[:-1]
                result[s]=nums[i]               

            stack.append(i)
            i+=1
            if i==len(nums) and not flag:
                i=0
                flag=True
        return result

也可以直接遍历2*n-1的元素,然后通过取余的方式来得到当前下标。

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        result=[-1 for _ in range(len(nums))]
        stack=[]
        count=0
        flag=False

        for i in range(2*len(nums)-1):

            while stack and nums[stack[-1]]<nums[(i%(len(nums)))]:
                s=stack[-1]

                stack=stack[:-1]
                result[s]=nums[i%(len(nums))]


            stack.append((i%(len(nums))))

        return result
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务