leetcode 1299 :要素を右側の最大要素と置き換える
6831 ワード
この問題はthe Introduction to Data Structures Arrays-101 section leetcodeで.
問題声明
配列
その後、配列を返します.
例1 :
1 <= arr . length <= 10 ^ 4 1 <= arr [ i ] <= 10 ^ 5
解決1:2つのループ
空間の複雑さ: O ( n )
解決2:1つのループ
最後のインデックスを- 1とすると、右側の要素から始まり、左側に1つずつ移動し、最大要素を追跡できます.すべての要素を最大要素に置き換えます.
例えば、
ARR =[ 17 , 18 , 5 , 4 , 6 , 1 ]
そして私たちが知っているように NEWARR [ 5 ]は- 1です NEWARR [ 4 ]はARR [ 5 ]に等しいです NEWARR [ 3 ]はARR [ 4 ]からARR [ 5 ]の間の最大数に等しいです.これはarr [ 4 ]からnewarr [ 4 ]までの最大数に等しい 論理を簡単にするには、次のように記述できます:
空間の複雑さ: O ( n )
問題声明
配列
arr
,そして、その配列のすべての要素をその要素の中で最大の要素とし、その右側の要素を1
.その後、配列を返します.
例1 :
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]
制約解決1:2つのループ
var replaceElements = function(arr) {
let newArr = []
for(let i=0; i<arr.length; i++){
let max = arr[i+1]
for(let j=i+1;j<arr.length;j++){
let value = arr[j+1]
max = value > max? value: max
}
newArr.push(max)
}
newArr[arr.length-1] = -1
return newArr
};
時間複雑性:O(n‐ξ)空間の複雑さ: O ( n )
解決2:1つのループ
最後のインデックスを- 1とすると、右側の要素から始まり、左側に1つずつ移動し、最大要素を追跡できます.すべての要素を最大要素に置き換えます.
例えば、
ARR =[ 17 , 18 , 5 , 4 , 6 , 1 ]
そして私たちが知っているように
newArr[0] = max(arr[1:5]) = max(arr[1], newArr[1])
newArr[1] = max(arr[2:5]) = max(arr[2], newArr[2])
newArr[2] = max(arr[3:5]) = max(arr[3], newArr[3])
newArr[3] = max(arr[4:5]) = max(arr[4], newArr[4])
newArr[4] = arr[5]
newArr[5] = -1
解決策は次のようになります.var replaceElements = function(arr) {
let newArr = [];
newArr[arr.length-1] = -1;
for (i = arr.length-2; i >= 0; i--) {
newArr[i] = Math.max(newArr[i+1],arr[i+1]);
}
return newArr;
};
時間複雑性:O(n)空間の複雑さ: O ( n )
Reference
この問題について(leetcode 1299 :要素を右側の最大要素と置き換える), 我々は、より多くの情報をここで見つけました https://dev.to/kira/leetcode-1299-replace-elements-with-greatest-element-on-right-side-47meテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol