leetcode 503. 下一个更大元素 II

题目要求

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

解题思路

方法一
  1. 因为是循环数组,想到将数组nums复制一份粘贴到nums后面,即nums_ = nums + nums,得到新数组nums_。
  2. 使用数组实现单调栈,字典保存数据以便后续处理。
  3. 栈中每次压入索引和值构成的二元组。
  4. 剩余思路跟下一个更大元素 I 基本一致。
class Solution(object):
    def nextGreaterElements(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        nums_ = nums + nums
        dic = {
   }
        stack = []
        for i in range(len(nums_)):
            if len(stack) == 0:
            	# 栈中每次压入索引和值构成的二元组
                stack.append((i, nums_[i]))
            else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值