Given a sorted array nums, remove the duplicates such that duplicates appeared at most _twice _and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array with O(1) extra memory.
Example 1:
Given nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3 respectively.
It doesn't matter what you leave beyond the returned length.
Solution
Variant of Leetcode 26.
def removeDuplicates(nums):
"""
:type nums: List[int]
:rtype: int
"""
# corner cases
if len(nums) <= 2:
return len(nums)
write_index = 2
for i in range(2, len(nums)):
if nums[write_index - 2] != nums[i]:
nums[write_index] = nums[i]
write_index += 1
return write_index