We use a slow pointer (l) and a fast pointer (r). The slow pointer tracks the position of the last unique element, while the fast pointer iterates through the array.
- If
len(nums) == 0, return 0. - Initialize
l = 1. - For
rfrom 1 tolen(nums)-1:- If
nums[r] != nums[r-1]:nums[l] = nums[r].l += 1.
- If
- Return
l.
- Time Complexity: O(N).
- Space Complexity: O(1).
def remove_duplicates(nums):
if not nums: return 0
l = 1
for r in range(1, len(nums)):
if nums[r] != nums[r - 1]:
nums[l] = nums[r]
l += 1
return l