## Problem Statement

Given a sorted array *nums*, 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 by **modifying the input array in-place** with O(1) extra memory.

**Example 1:**

Givennums=[1,1,2], Your function should return length =, with the first two elements of`2`

being`nums`

and`1`

respectively. It doesn't matter what you leave beyond the returned length.`2`

**Example 2:**

Givennums=[0,0,1,1,1,2,2,3,3,4], Your function should return length =,`0`

,`1`

,`2`

, and`3`

respectively. It doesn't matter what values are set beyond the returned length.`4`

**Clarification:**

Confused why the returned value is an integer but your answer is an array?

Note that the input array is passed in by **reference**, which means modification to the input array will be known to the caller as well.

Internally you can think of this:

//numsis passed in by reference. (i.e., without making a copy) int len = removeDuplicates(nums); // any modification tonumsin your function would be known by the caller. // using the length returned by your function, it prints the firstlenelements. for (int i = 0; i < len; i++) { print(nums[i]); }

**Solution:**

class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i=0
for j in range(1, len(nums)):
if nums[i]!=nums[j]:
i+=1
nums[i]=nums[j]
return i+1