This website contains ALL LeetCode **Premium** problems for
**FREE!!**.

All leaked interview problems are collected from Internet.

All leaked interview problems are collected from Internet.

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

**Example:**

Givennums= [1,1,2], Your function should return length = 2, with the first two elements ofnumsbeing 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

b'

\n## Solution

\n

\n#### Approach #1 (Two Pointers) [Accepted]

\n\n

'
\n\n

\n\n

**Algorithm**

Since the array is already sorted, we can keep two pointers and , where is the slow-runner while is the fast-runner. As long as , we increment to skip the duplicate.

\nWhen we encounter , the duplicate run has ended so we must copy its value to . is then incremented and we repeat the same process again until reaches the end of array.

\npublic int removeDuplicates(int[] nums) {\n if (nums.length == 0) return 0;\n int i = 0;\n for (int j = 1; j < nums.length; j++) {\n if (nums[j] != nums[i]) {\n i++;\n nums[i] = nums[j];\n }\n }\n return i + 1;\n}\n

**Complexity analysis**

- \n
- \n
Time complextiy : .\nAssume that is the length of array. Each of and traverses at most steps.

\n \n - \n
Space complexity : .

\n \n