-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChallenge26.java
More file actions
51 lines (44 loc) · 1.67 KB
/
Challenge26.java
File metadata and controls
51 lines (44 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
* Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once.
* The relative order of the elements should be kept the same. Then return the number of unique elements in nums.
* Consider the number of unique elements of nums to be k, to get accepted, you need to do the following things:
* Change the array nums such that the first k elements of nums contain the unique elements in the order they were present in nums initially.
* The remaining elements of nums are not important as well as the size of nums.
* Return k
*/
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0 || nums == null) {
return 0;
}
Set<Integer> set = new HashSet<>();
for (int i : nums) {
if (!set.contains(i)) {
set.add(i);
}
}
nums = new int[set.size()];
int i = 0; // Used to traverse the array 'nums'
for (Iterator<Integer> n = set.iterator(); n.hasNext();) {
nums[i] = n.next();
i++;
}
Arrays.sort(nums);
for (int k : nums) {
System.out.print(" " + k);
}
return nums.length;
}
}
public class Challenge26 {
public static void main(String[] args) {
Solution obj1 = new Solution();
int[] array1 = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 };
System.out.println(array1.length);
System.out.println(obj1.removeDuplicates(array1));
}
}