leetcode 026 remove duplicates from sorted array

题目要求

输入一个有序,并且可能含有重复内容的数组,原位删除重复内容,空间复杂度为常数级别,并返回无重复数组长度。无重复部分之外内容不限。

思路:

快慢指针,快指针遍历数组,慢指针从零开始,每当遇到一个新数字时将新数字复制到当前慢指针位置并前进一位,最后返回慢指针位置加 1 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class (object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) <= 1:
return len(nums)
l = len(nums)
slow = 0
for fast in range(l):
if nums[fast] != nums[slow]:
slow += 1
nums[slow] = nums[fast]
return slow + 1