remove duplicates from sorted array


Remove Duplicates from Sorted Array I
虽然这也是一道双指针的题,但是比较简单,写这个博客的意义在于,有时候坚持自己的代码,容易bug-free,参考九章的答案虽然代码比较简练,但是反而坑坑洼的。
自己写的

1
2
3
4
5
6
7
8
9
10
11
public int (int[] nums) {
if (nums == null || nums.length == 0)
return 0;
int index = 0;
for (int i = 0; i < nums.length; ++i) {
while (i + 1 < nums.length && nums[i] == nums[i + 1])
++i;
nums[index++] = nums[i];
}
return index;
}

九章的参考答案

1
2
3
4
5
6
7
8
9
10
11
12
13
public int (int[] A) {
if (A == null || A.length == 0) {
return 0;
}

int size = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] != A[size]) {
A[++size] = A[i];
}
}
return size + 1;
}

Remove Duplicates from Sorted Array II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int (int[] nums) {
if (nums == null || nums.length == 0)
return 0;
int index = 0;
for (int i = 0; i < nums.length; ++i) {
if (i + 1 < nums.length && nums[i] == nums[i + 1]) {
nums[index++] = nums[i++];
nums[index++] = nums[i];
} else {
nums[index++] = nums[i];
}
while (i + 1 < nums.length && nums[i] == nums[i + 1]) {
++i;
}
}
return index;
}