LeetCode503:下一个更大元素 II

问题503:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1

本题算法与739题相同。

完整代码:

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        double_nums = copy.deepcopy(nums)
        double_nums.extend(nums)
        l = [-1 for _ in range(len(double_nums))]
        stack = []        
        for i in range(len(double_nums)):
            if not stack or double_nums[i] <= double_nums[stack[-1]]:
                stack.append(i)
                continue
            while stack and double_nums[i] > double_nums[stack[-1]]:                
                l[stack[-1]] = double_nums[i]
                stack.pop()            
            stack.append(i)
        return l[:len(nums)]

运行结果:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容