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