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