解法
双指针
因为数组已经排序,在数组中放置 i 和 j 两个指针,且i在j的左边
i为慢指针j为快指针。
进行判断:
- 当nums[i]==nums[j]时,j指针向后移动一位,i不变
- 当nums[i]!=nums[j]时,i指针向后移动一位,得到新的nums[i]=nums[j],之后j指针向后移动一位
最后返回的就是i+1表示移除后数组的新长度
代码实现
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i, j = 0, 1
while j < len(nums):
if nums[j] > nums[i]:
i += 1
nums[i] = nums[j]
j += 1
return i+1