並べ替え配列から重複を削除する
5072 ワード
この問題はthe Introduction to Data Structures Arrays-101 section leetcodeで.
問題声明
与えられる
別の配列に余分なスペースを割り当てないでください.
例1 :
解決策
つのポインタ
指定された配列はソートされた配列ですので、重複する数字はグループとなります.まず、空の配列のエッジケースを処理できます.それから、我々は頭から要素を繰り返し始めることができます.
番目のポインターはリスト内のすべての要素を通過し、最初のポインターは一意の番号に合わせて移動します.
問題声明
与えられる
sorted array nums
, そして、各要素が1度だけ1度だけ残らず、新たな長さを返すようにして、重複している.別の配列に余分なスペースを割り当てないでください.
例1 :
Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
例2 :Given nums = [0,0,1,1,1,2,2,3,3,4],
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
解決策
つのポインタ
指定された配列はソートされた配列ですので、重複する数字はグループとなります.まず、空の配列のエッジケースを処理できます.それから、我々は頭から要素を繰り返し始めることができます.
番目のポインターはリスト内のすべての要素を通過し、最初のポインターは一意の番号に合わせて移動します.
var removeDuplicates = function(nums) {
// Handling Edge Case
if(nums.length === 0 ) return 0
let p1 = 0
for(let p2 = 1; p2< nums.length; p2++){
if(nums[p1] !== nums[p2]){
p1++;
nums[p1] = nums[p2]
}
}
return p1 +1
}
また、配列の末尾からイテレータを開始することもできます.つのポインタの値が同じ場合、要素を削除します.var removeDuplicates = function(nums) {
// Handling Edge Case
if(nums.length === 0 ) return 0
for(let i = nums.length-1; i > 0;i--){
if(nums[i]===nums[i-1]){
nums.splice(i,1)
}
}
return nums.length
};
Reference
この問題について(並べ替え配列から重複を削除する), 我々は、より多くの情報をここで見つけました https://dev.to/kira/leetcode-26-remove-duplicates-from-sorted-array-3ak7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol