My question was that I need to return the length of the array that deleted the duplicates, but we can leave no more than two duplicates.
For example, [1, 1, 1, 2, 2, 3] new array will be [1, 1, 2, 2, 3] . So the new length will be equal to 5. I came up with an algorithm with O (2n), I believe. How can I improve this to be the fastest.
def removeDuplicates(nums): if nums is None: return 0 if len(nums) == 0: return 0 if len(nums) == 1: return 1 new_array = {} for num in nums: new_array[num] = new_array.get(num, 0) + 1 new_length = 0 for key in new_array: if new_array[key] > 2: new_length = new_length + 2 else: new_length = new_length + new_array[key] return new_length new_length = removeDuplicates([1, 1, 1, 2, 2, 3]) assert new_length == 5
My first question will be my algorithm, even the right one?
source share