Approach 1: Optimal class Solution: def removeDuplicates(self, nums: List[int]) -> int: if len(nums) == 0: return 0 left, i = 0, 0 while i < len(nums): nums[left] = nums[i] while i < len(nums) and nums[left] == nums[i]: i += 1 left += 1 return left Complexity Time: O(n) Space: O(1) Other Languages Go func removeDuplicates(nums []int) int { left := 0 for i := 1; i < len(nums); i++ { if nums[i] != nums[i - 1] { left += 1 nums[left] = nums[i] } } return left + 1 }