做过类似的题,一眼就是双指针,刚好也就是题解。
if not nums:
return 0
p1 = 0
for p2 in range(1, len(nums)):
if nums[p2] != nums[p1]:
p1 += 1
nums[p1] = nums[p2]
return p1 + 1
根据规律,重复的数字必定相连,那么只要下一个数字与上一个数字不同,那么上一个数字就可以“入库”,就是数字变化了几次,那么就只有几个数字是唯一的。
指针1(慢指针)是列表索引,所以返回的长度需要加一。