Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Given nums = [1,1,2], Your function should return length = 2, with the first two elements ofnums
being1
and2
respectively. It doesn't matter what you leave beyond the returned length.
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
f=1
s=0
if len(nums)==0:
return 0
while f<len(nums):
if nums[f]==nums[f-1]:
nums[s]=nums[f]
f+=1
else:
s+=1
nums[s]=nums[f]
f+=1
s=s+1
return s
要更改原数组,返回的是数组长度。用快慢两个指针,快的指针和它前一个比,一样的话就让慢指针指的设为fast指的,因为是重复的所以不会改变慢指针指向的值。如果不一样了,就让慢指针进一个然后赋值。