gpt4 book ai didi

arrays - 用右边最近的较大整数替换数组中整数的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:24 26 4
gpt4 key购买 nike

如何在 O(n) 时间内解决这个问题?

给定一个未排序的整数数组,设计算法来转换数组,使整数被右边最近的较大整数替换。如果右边没有更大的整数,则整数保持不变。例如下面的整数数组

2 1 4 5 3 6 7 9 4 8

应该变成

4 4 5 6 6 7 9 9 8 8

最佳答案

  • 初始化整数栈

  • 从左到右。

  • 当元素较小时从栈中弹出,并替换为当前元素

  • 将元素的id添加到栈中

请注意,堆栈将严格递减。并且每个元素最多弹出/添加 1 次。因此 O(N)

Python 示例代码:

l = [2, 1, 4, 5, 3, 6, 7, 9, 4, 8]
s = [0]
for i in range(1, len(l)):
while s and l[i] > l[s[-1]]:
l[s.pop()] = l[i]
s.append(i)

关于arrays - 用右边最近的较大整数替换数组中整数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com