https://gist.github.com/gcrfelix/aa67be90db5a54bb63b8
补充: remove duplicates from sorted array, [2,2,3,3,4,5] -> [4,5]
// 注意:如果数组是unsorted并且要求keep original order,要求remove dups,
// 此时用hashmap, key是元素,value是index的list, 如果list的size大于1,则去掉
public int removeDuplicates(int[] nums){
if(nums == null || nums.length == 0) {
return 0;
}
int i=0, j=0, index=0;
int len = nums.length;
while(i < len) {
while(j < len && nums[i] == nums[j]) { // 一定要注意这边还有个j<len的条件!如果数组最后几位是dups,那么不加这个条件会使j=len
j++;
}
if(j-i>1) {
i=j;
} else {
nums[index++] = nums[i++];
}
}
return index;
}
补充: remove duplicates from sorted array, [2,2,3,3,4,5] -> [4,5]
// 注意:如果数组是unsorted并且要求keep original order,要求remove dups,
// 此时用hashmap, key是元素,value是index的list, 如果list的size大于1,则去掉
public int removeDuplicates(int[] nums){
if(nums == null || nums.length == 0) {
return 0;
}
int i=0, j=0, index=0;
int len = nums.length;
while(i < len) {
while(j < len && nums[i] == nums[j]) { // 一定要注意这边还有个j<len的条件!如果数组最后几位是dups,那么不加这个条件会使j=len
j++;
}
if(j-i>1) {
i=j;
} else {
nums[index++] = nums[i++];
}
}
return index;
}