📅  最后修改于: 2023-12-03 15:42:21.350000             🧑  作者: Mango
有一个由数字组成的数组 nums,你需要将数组中的每个元素替换为其右侧比它大的元素。如果没有则用 -1 替换。
例如,给定 nums = [5,2,6,1],将其修改为 [6,6,-1,-1]。
第一行输入一个整数 n,表示数组的长度。
第二行输入 n 个整数,表示数组 nums 中的元素。
输出一个由元素替换后的 nums 组成的数组。
我们可以从后向前遍历数组 nums,使用一个变量保存 maxVal 表示当前元素右侧比它大的最大元素值,然后将数组中的当前元素修改为当前元素右侧比它大的最大元素值 maxVal。
def replaceElements(nums: List[int]) -> List[int]:
n = len(nums)
maxVal = -1
for i in range(n - 1, -1, -1):
cur = nums[i]
nums[i] = maxVal
maxVal = max(maxVal, cur)
return nums
时间复杂度:O(n),其中 n 为数组的长度。数组仅被遍历了一次。
空间复杂度:O(1)。为了存储 maxVal 所需的空间。