丢失的数字
public static int method(int[] arr){
Arrays.sort(arr); // 先排序
int st = 0;
int en = arr.length-1;
int n = arr.length;
if (arr[st] != 0) { // 第一个数必须是0
return 0;
}
if (arr[en]!=n){ // 最后一个数必须是n
return n;
}
int i = 1;
while (i < n) {
if (arr[i] - arr[i - 1] > 1) { // 如果不连续,则找到缺失的数字
return (arr[i]+arr[i-1])/2; // 为两数和的一半
}
i++;
}
return 0;
}
移动0到末尾
public static void method(int[] arr) {
int l = 0;
int r = 0;
int n = arr.length;
while (r < n) {
if (arr[r] != 0) {
swap(l, r, arr); // 你交换的永远是我交换后移动左指针后左指针指向的0
l++;
}
r++;
}
}