Leetcode1299:将每个元素替换为右侧最大元素
题目描述:
给你一个数组 arr
,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1
替换。
完成所有替换操作后,请你返回这个数组。
代码思路:
方法 replaceElements
-
输入参数:接收一个整数列表
arr
。 -
初始化:创建一个变量
tmp
并初始化为 -1。这个变量将用于存储当前遍历到的元素右侧的最大值。 -
遍历数组:从数组的最后一个元素开始向前遍历(即从右到左)。这样做是为了确保在替换当前元素时,其右侧的所有元素都已经被遍历过,因此
tmp
中存储的是当前元素右侧的最大值。 -
替换元素:
- 在每次迭代中,首先将当前元素的值存储在变量
cur
中(虽然在这个特定的实现中,cur
的值在后续操作中没有被直接使用,但保留这个步骤有助于理解代码的意图)。 - 然后,将当前元素
arr[i]
替换为tmp
的值。这样,arr[i]
就被替换为了其右侧的最大值(或者对于最后一个元素来说,是 -1)。 - 最后,更新
tmp
的值为当前元素cur
和tmp
中的较大值。注意,这个更新操作是在替换当前元素之后进行的,因此它反映的是当前元素之前(即右侧,但因为我们是从右到左遍历的,所以实际上是“之前已遍历过的部分”)的最大值。
- 在每次迭代中,首先将当前元素的值存储在变量
-
返回结果:遍历完成后,返回修改后的数组
arr
。
代码实现:
class Solution:
def replaceElements(self, arr: List[int]) -> List[int]:
tmp=-1
for i in range(len(arr)-1,-1,-1):
cur=arr[i]
arr[i]=tmp
tmp=max(cur,tmp)
return arr