题目描述
解题思路
使用快慢指针进行解题。i=0开始为慢指针,j=1开始为快指针。使用j遍历数组,只有当nums[j]!=nums[i]时,i前进一步,再赋值nums[i]=nums[j]即可,最后返回i+1。
复杂度分析:
由于只需要遍历一次数组,所以时间复杂度为o(n)
由于只需要创建常数个遍历,所以空间复杂度为o(1)
python代码
class Solution(object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:return 0
i = 0
for j in range(1, len(nums)):
if nums[j] != nums[i]:
i += 1
nums[i] = nums[j]
return i + 1