remove duplicates from sorted array ii

Two pointers的题目就是要搞清楚两个指针的状态,保存的值,何时更新,何时移动等。
这种从后往前复制值的题目一定要保持住一个tail,剩下的就可以酌情考虑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class (object):
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) <= 2:
return len(nums)
cur = 2
tail = 2
while cur <= tail and tail < len(nums):
nums[cur] = nums[tail]
if nums[cur] == nums[cur-1] and nums[cur] == nums[cur-2]:
# copy tail over then tail += 1
tail += 1
else:
cur += 1
tail += 1
return cur