題目描述:
給你一個數組?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