python
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
# 处理边界数据
if not nums: return 0
if len(nums) == 1: return 1
# 两个指针,一个记录当前有多少个不重复值的个数,一个记录最新遍历到的值
count = 1
tmp = nums[0]
for i in range(1, len(nums)):
if nums[i] == tmp:
continue
# 遍历到新的值时,更新指针
tmp = nums[i]
nums[count] = tmp
count += 1
# 切分原数据,并返回结果
nums = nums[:count]
return count
针对上面的解答,略加改造
python
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
# 处理边界数据
if not nums: return 0
if len(nums) == 1: return 1
# 三个指针,一个记录当前数组中应该有的值的个数,一个记录最新遍历到的值,一个记录重复次数
count = 1
tmp = nums[0]
tmp_count = 1
for i in range(1, len(nums)):
if nums[i] == tmp:
# 增加重复次数计数
tmp_count += 1
if tmp_count > 2:
# 超过2次时,不记录在数组了
continue
else:
# 更新值和重复次数
tmp = nums[i]
tmp_count = 1
# 更新数组的值,并更新值个数的指针
nums[count] = tmp
count += 1
# 切分原数据,并返回结果
nums = nums[:count]
return count