質問の出典:Likou
配列arrを与えてください。各要素を右側の最大の要素に置き換えてください。最後の要素である場合は、-1に置き換えてください。
すべての交換操作が完了したら、この配列に戻ってください。
例:
入力:arr = [17,18,5,4,6,1]
出力:[18,6,6,6,1、-1]
促す:
1 <= arr.length <= 10 ^ 4
1 <= arr [i] <= 10 ^ 5
この質問では、逆トラバーサル方法を使用しました。
コードは次のとおりです。
/**
* @param {number[]} arr
* @return {number[]}
*/
var replaceElements = function (arr) {
let lastMax = -1
let curMax = -1
let len = arr.length
while (len--) {
curMax = Math.max(arr[len], lastMax)
arr[len] = lastMax
lastMax=curMax
}
return arr
};