程序在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]

    以上是 程序在Python中找到圆形的更大元素 的全部内容, 来源链接: utcz.com/z/326988.html

    回到顶部