LeetCode26.删除排序数组中的重复项
题目
双指针
设置两个指针,i为慢指针,j为快指针,因为数组是有序的,所以快指针遍历数组,寻找去满指针不同的元素,当发现不同元素时,把这个元素就赋值在慢指针的后一个位置,然后慢指针后移,快指针继续遍历数组,直到快指针遍历完整个数组为止。返回的新数组长度应该为i+1。
时间复杂度O(n),空间复杂度O(1)。
代码实现
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) < 2:
return len(nums)
i,j = 0,1
while j < len(nums):
if nums[i] == nums[j]:
j += 1
else:
i += 1
nums[i] = nums[j]
return i+1