程序在Python中找到圆形的更大元素

假设我们有一个称为nums的数字列表。我们必须找到一个长度相同的新列表,其中索引i处的值分配给下一个大于其右边nums [i]的元素,并在需要时返回列表的最前面。如果没有更大的数字,则应将其设置为-1。

因此,如果输入类似于[4,5,1,3],那么输出将为[5,-1,3,4]

为了解决这个问题,我们将按照以下步骤操作:

  • n:=一个的大小

  • stack:=一个堆栈,最初插入0,res:=一个大小为n的列表,并以-1填充

  • 对于范围0和1中的每个值,请执行

    • res [堆栈顶部]:= a [i]

    • 从堆栈中删除最后一个元素

    • 对于范围在0到n-1之间的i

    • 当堆栈不为空且a [堆栈顶部] <a [i]时,执行

    • 在堆栈末尾插入i

    • 返回资源

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, a):
          n = len(a)
          stack, res = [0], [-1] * n
          for _ in range(2):
             for i in range(n):
                while stack and a[stack[-1]] < a[i]:
                   res[stack[-1]] = a[i]
                   stack.pop()
                stack.append(i)
       return res
    ob = Solution()nums = [4, 5, 1, 3]
    print(ob.solve(nums))

    输入项

    [4, 5, 1, 3]

    输出结果

    [5, -1, 3, 4]
    猜你喜欢