## 正西风落叶下长安

π seconds equal to one nano-century.

# Facebook面试题 Remove duplicates from array where all duplicate numbers are located adjacently

Given an integer array which has the property that all the elements haveing same value are adjacent to each other.
e.g. {2,2,2,1,5,6,6,7,7}, output: Remove duplicate element in place and output the length of the new array. Do it inplace and we don’t care about the elements outside the new length of the array.
e.g. return 5 and the input arrya will become {2,1,5,6,7,x,x,x,x}. “x” means we don’t care about its value.

• Analysis:

A brute force method for this question would be to traverse the array and store existed numbers into a HashSet on the fly. Each time we encountering a new number, put it to the last position of the new array.
However, in order to solve this question in place, we must not store all prvious existed numbers. Notice that in the requirement mentioned that all the duplicates are adjacent to each other. Thus we only have to keep one variable for the previous number. Each time we encounter at a number, set the previous number variable to this new one and swap the number with the last position of the new array. By this way we can do this in place.

The Time complexity of this algorithm is O(n) and the space complexity is O(1). Because we only traverse the whole array once and only use one variable.

The Java implementation is showed as following:

public class Solution {
public int removeDuplicates(int[] array) {
if (array == null || array.length == 0) return 0;

int prev = array[0];
int last = 1;

for (int i = 1; i < array.length; i++) {
if (array[i] != prev) {
prev = array[i];
swap(array, last, i);
last++;
}
}

return last;
}

private void swap(int[] array, int i1, int i2) {
int tmp = array[i1];
array[i1] = array[i2];
array[i2] = tmp;
}
}

yaokai_assultmaster

#### 82. Remove Duplicates from Sorted List II Leetcode Python

2015-02-05 11:48:11

#### [C++]LeetCode 26: Remove Duplicates from Sorted Array（有序数组去重）

2015-05-02 21:43:54

#### 83. Remove Duplicates from Sorted List（python）

2016-09-18 21:34:35

#### LeetCode:Remove Duplicates from Sorted Array

2013-09-02 20:42:03

#### Remove Duplicates from Sorted Array -- LeetCode

2014-02-27 05:12:22

#### LeetCode 26 — Remove Duplicates from Sorted Array（C++ Java Python）

2014-02-23 15:12:20

#### Remove Duplicates from Sorted Array [python解]

2017-07-24 19:18:55

#### LeetCode(83)Remove Duplicates from Sorted List

2014-01-10 08:06:49

#### leetCode 82.Remove Duplicates from Sorted List II （删除排序链表的重复II） 解题思路和方法

2015-07-22 13:29:46

#### Leetcode_83_Remove Duplicates from Sorted List

2014-12-04 19:20:34