Remove Duplicate Numbers in Array(lintcode 521)
Description
Given an array of integers, remove the duplicate numbers in it.
You should:
- Do it in place in the array.
- Move the unique numbers to the front of the array.
- Return the total number of the unique numbers.
Notice:
You don't need to keep the original order of the integers.
Example
Given nums = [1,3,1,4,4,2], you should:
Move duplicate integers to the tail of nums => nums = [1,3,4,2,?,?]. Return the number of unique integers in nums => 4. Actually we don't care about what you place in ?, we only care about the part which has no duplicate integers.
Interface
public class Solution {
/**
* @param nums an array of integers
* @return the number of unique integers
*/
public int deduplication(int[] nums) {
// Write your code here
}
}
Idea
Use the HashSet to get unique numbers.
Solution
public class Solution {
/**
* @param nums an array of integers
* @return the number of unique integers
*/
public int deduplication(int[] nums) {
// Write your code here
HashSet<Integer> uniqueNums = new HashSet<Integer>();
for (int i = 0; i < nums.length; ++i) {
uniqueNums.add(nums[i]);
}
int i = 0;
for (Integer num : uniqueNums) {
nums[i] = num;
++i;
}
return uniqueNums.size();
}
}