题目描述:
给你一个数组 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=-1for i in range(len(arr)-1,-1,-1):cur=arr[i]arr[i]=tmptmp=max(cur,tmp)return arr