26. Remove Duplicates from Sorted Array

文章目录
  1. 1. 题目
  2. 2. 思路

题目

思路

这道题我被绕进去了导致花了挺久来思考,其实很简单。重点在于三个地方:1、不能为另一个数组生成额外空间,不然的话直接塞新数组里面就完事。2、新数组后面部分是什么无所谓。3、目标的数组是一个排了序的数组。所以这道题只需要遍历数组,发现重复的就把后面的往前挪并且覆盖掉重复的就行。。具体说,可以维护2个指针,慢指针开始指向数组第一个元素,快指针指向第二个元素,然后快指针不断判断自己当前元素和前一个元素是否相同,相同则快指针后移,不相同则将当前值赋值给慢指针的后一个元素,慢指针后移。最后慢指针指向的元素及前面所有元素都是不重复的。

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