本篇主要是从Array和List中remove duplicates,其中Array和List有已经排好序的和未排序的。
Remove Duplicates from Sorted Array
题目为删除有序数组中重复的元素。有序数组中的重复元素一定是与之前元素相等,我们很容易能判别出重复元素,但是我们删除元素时,数组后面的元素需要向前移动,这里我们使用了两个局部变量,一个i记录从头要访问的元素,一个记录需要保留在数组中元素,这样所有的元素相当于只进行了一次移动,避免增加时间复杂度。代码:
public class Solution {
public int removeDuplicates(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
此题目与Remove Duplicates from Sorted Array I的区别在于这道题目允许存在两次重复,即如果某个元素出现两次,则不进行删除。代码&#x