Problem
# Given a sorted array,
# remove the duplicates in place such that each element appear only once
# and return the new length.
#
# Do not allocate extra space for another array,
# you must do this in place with constant memory.
#
# For example,
# Given input array nums = [1,1,2],
#
# Your function should return length = 2,
# with the first two elements of nums being 1 and 2 respectively.
# It doesn't matter what you leave beyond the new length.
leetcode: 80. Remove Duplicates from Sorted Array II
AC
class Solution():
def removeDuplicates(self, x):
if len(x) < 1:
return len(x)
cur = 1
for _ in range(1, len(x)):
if x[cur] == x[cur - 1]:
del x[cur]
else:
cur += 1
return cur
if __name__ == "__main__":
assert Solution().removeDuplicates([1, 1, 2, 3, 5, 5]) == 4
assert Solution().removeDuplicates([]) == 0