ソートされた配列から重複を削除する
2584 ワード
26章ソートされた配列から重複を削除する
容易
整数配列
nums
非減少順序でソートされ、重複を取り除くin-place 各ユニークな要素が1回だけ表示されます.要素の相対的な順序は同じに保たれるべきです.いくつかの言語で配列の長さを変更することは不可能ですので、代わりに結果を配列の最初の部分に配置する必要があります
nums
. もっと正式に、もしあればk
重複を削除した後の要素、次にk
元素nums
は、最終的な結果を保持する必要があります.それはあなたが最初の角k
要素.リターン
k
最後の結果を最初に配置した後k
スロットnums
.別の配列に余分なスペースを割り当てることはできません.入力配列を変更することでこれをしなければなりませんin-place を用いる.
カスタムジャッジ
次のコードを使用してソリューションをテストします
int[] nums = [...]; // Input array int[] expectedNums = [...]; // The expected answer with correct length int k = removeDuplicates(nums); // Calls your implementation assert k == expectedNums.length; for (int i = 0; i < k; i++) { assert nums[i] == expectedNums[i]; }
If all assertions pass, then your solution will be accepted.
Example 1:
Input: nums = [1,1,2] Output: 2, nums = [1,2,_] Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively. It does not matter what you leave beyond the returned k (hence they are underscores).
Example 2:
Input: nums = [0,0,1,1,1,2,2,3,3,4] Output: 5, nums = [0,1,2,3,4,_,_,_,_,_] Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively. It does not matter what you leave beyond the returned k (hence they are underscores).
Constraints:
1 <= nums.length <= 3 * 104
-100 <= nums[i] <= 100
-
nums
is sorted in non-decreasing order.
Python solution
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
counter = 0
for i in range(len(nums)):
if i < len(nums)-1 and nums[i] == nums[i + 1]:
continue
nums[counter] = nums[i]
counter +=1
return counter
Reference
この問題について(ソートされた配列から重複を削除する), 我々は、より多くの情報をここで見つけました https://dev.to/isaacttonyloi/remove-duplicates-from-a-sorted-array-4obkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol