题目
给定一个排序数组,在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
解决方法
双指针
以数组[1,2,2,3]为例,使用双指针(slow指针与fast指针)
- 两个指针首先同时指向第一个数
- 当两个指针指向的数相同时。fast指针向前走一步
- 当两个指针指向的数不相同时,slow指向向前走一步,将fast指针的值赋值给slow指针,然后fast指针向前走一步
- 当fast’指针走完全部数后,整个过程结束
Python:
l = len(nums)
if nums:
slow = 0
for fast in range(0,l):
if nums[slow] != nums[fast]:
slow = slow+1
nums[slow] = nums[fast]
return slow+1
else:
return 0
参考:力扣加加