方法一:使用List
优点:不必排序
缺点:性能差
public static int[] removeRepeatElementOfArr (int [] arr) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
if (!list.contains(arr[i])) {
list.add(arr[i]);
}
}
int[] newArr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
newArr[i] = list.get(i);
}
return newArr;
}
方法二:使用System.arraycopy()
优点:性能好
缺点:必须保证数组是已排序的,否则内部排序会影响性能
public static int[] removeRepeatElementOfArr(int[] arr) {
int smallIndex = 0;
int bigIndex = 1;
Arrays. sort(arr);
while (bigIndex < arr.length ) {
if (arr[smallIndex] == arr[bigIndex]) {
bigIndex++;
} else {
arr[++smallIndex] = arr[bigIndex++];
}
}
int[] rslt = new int[smallIndex + 1];
System. arraycopy(arr, 0, rslt, 0, smallIndex + 1);
return rslt;
}