免責事項
私は重複する質問をよく知っていますが、これは新しい配列を作成せずに重複を削除するように求めており、元の配列を変更することを望んでいます。
指示
並べ替えられた配列番号を指定して、各要素が1回だけ表示されるようにインプレースで重複を削除し、新しい長さを返します。
別の配列に余分なスペースを割り当てないでください。O(1)の余分なメモリを使用して入力配列をインプレースで変更する必要があります。
例
与えられたnums = [1,1,2]
、
関数は長さ= 2を返す必要があり、最初の2つの要素はnums
それぞれ1と2です。
返された長さを超えて何を残すかは問題ではありません。
試み
const removeDuplicates = function(nums) {
for(let i of nums){
if(nums[i] === nums[i]){
nums.splice(i, 1)
}
}
return nums.length;
};
console.log(removeDuplicates([1, 1, 2]));
console.log(removeDuplicates([1, 2]));
// [1, 1, 2] => [1, 2] (Correct)
// [1, 2] => [1] (Incorrect - should be [1, 2])
スプライスを使用して配列を正しく変更していますか?2番目の引数を修正するにはどうすればよいですか?
また、leetcodeでは、最初の引数を実行すると、それが正しいと表示され、残りの要素の配列が返されますが、命令は新しい配列の長さを要求していました。何かが足りないかどうかはわかりませんが、なぜ長さが返されないのですか?
はい、どうぞ:
const removeDuplicates = function(nums) {
for(let i = 0; i < nums.length;){
if(nums[i] === nums[++i]){
nums.splice(i, 1)
}
}
return nums.length;
};
console.log(removeDuplicates([1, 1, 2]));
console.log(removeDuplicates([1, 2]));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加