用 Python 编写程序,查找右侧循环较大元素
pythonserver side programmingprogramming更新于 2026/1/9 5:00:17
假设我们有一个名为 nums 的数字列表。我们必须找到一个长度相同的新列表,其中索引 i 处的值被分配给其右侧下一个大于 nums[i] 的元素,并在需要时循环回到列表的前面。如果没有更大的数字,则应将其设置为 -1。
因此,如果输入为 [4, 5, 1, 3],则输出将为 [5, -1, 3, 4]
为了解决这个问题,我们将遵循以下步骤−
n := a 的大小
stack := 堆栈,最初插入 0,res := 大小为 n 的列表并填充 -1
对于范围 0 和 1 中的每个值,执行
对于范围 0 到 n-1 中的 i,执行
当堆栈不为空且 a[堆栈顶部] < a[i],do
res[栈顶] := a[i]
从栈中删除最后一个元素
将 i 插入栈尾
返回 res
让我们看看下面的实现以便更好地理解 −
示例
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

