# Remove Duplicates from Sorted Array

> 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 A = [1,1,2],

> Your function should return length = 2, and A is now [1,2].

```c++
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(n == 0) {
return 0;
}

int j = 0;
for(int i = 1; i < n; i++) {
if(A[j] != A[i]) {
A[++j] = A[i];
}
}
return j + 1;
}
};
```

# Remove Duplicates from Sorted Array II

> Follow up for "Remove Duplicates":
> What if duplicates are allowed at most twice?

> For example,
> Given sorted array A = [1,1,1,2,2,3],

> Your function should return length = 5, and A is now [1,1,2,2,3].

```c++
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(n == 0) {
return 0;
}

int j = 0;
int num = 0;
for(int i = 1; i < n; i++) {
if(A[j] == A[i]) {
num++;
if(num < 2) {
A[++j] = A[i];
}
} else {
A[++j] = A[i];
num = 0;
}
}
return j + 1;
}
};
```