原题
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
解题思路
- 使用一个指针length记录当前位置,即该写入到哪里
- 使用一个prev记录之前的值,每次比较:
- 如果与之前的值不同,把当前值写入length的位置,length += 1
- 如果与之前值相同,继续
完整代码
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
prev = None
length = 0
for num in nums:
if num != prev:
prev = num
nums[length] = num
length += 1
return length
网友评论