Remove Duplicates From Sorted Array
nums = [0,0,1,1,1,2,2,3,3,4] の重複をなくすようにするので、下記のようになる。 nums = [0,1,2,3,4,,,,,_] pointer を 2つ使う。 最初の数字は必ずユニークになるので、 left = 1 とする。 right は for でループさせながら icrement していく。 non-decreasing order なので、 right の値と right - 1 を比較して、 違う値なら一番初めに現れるユニークの数字だとわかる。 そのためその数字を left pointer がある位置に入れる。 その後、 left pointer をicrementする。 最終的に left pointer の位置がユニークな数の出現回数となるので、 その値を return する。 class Solution: def removeDuplicates(self, nums: List[int]) -> int: left = 1 for right in range(1, len(nums)): if nums[right] != nums[right - 1]: nums[left] = nums[right] left += 1 return left