leetcode503 下一个更大元素(二)

这道题的思路:

由循环数组的定义,我们必定可以将该数组扩充成2倍,即nums=nums*2。

然后使用栈来存储没有找到下一个更大元素的元素:

对每个元素,如果大于当前栈顶元素,则栈顶元素找到了下一个更大元素。

然后我们将当前元素入栈。

最后我们只需要输出前n个元素即可。

代码并不复杂,相比文字更容易理解。

class Solution(object):
    def nextGreaterElements(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        n=len(nums)#原始循环数组的长度
        nums=nums*2
        result=[-1 for i in range(0,2*n)]
        stack=[]
        for i,num in enumerate(nums):
            while stack and stack[-1][1]

 

你可能感兴趣的:(算法面试题)