Missing Number

来源:互联网 发布:网络诽谤怎么处理 编辑:程序博客网 时间:2024/06/10 19:17

两种做法,一种二叉搜索,一种用等差数列来做


public class Solution {    public int missingNumber(int[] nums) {        int n = nums.length;        Arrays.sort(nums);        int start = 0, end = n - 1;        while (start + 1 < end) {            int mid = start + (end - start) / 2;            if (nums[mid] > mid) {                end = mid;            } else {                start = mid;            }        }        if (start > nums[start]) {            return nums[start] + 1;        } else if (start < nums[start]) {            return nums[start] - 1;        } else if (end >= nums[end]) {            return nums[end] + 1;        } else {            return nums[end] - 1;        }                // right        // int sum = 0;        // for (int i: nums) {        //     sum += i;        // }        // int n = nums.length;        // int a = n, b = n+1;        // if(n%2==0) {        //     a = a/2;        // } else {        //     b = b/2;        // }        // return a*b - sum;                        // int length = nums.length;        // Arrays.sort(nums);        // if (length == 1 && nums[0] == 1) {        //     return 0;        // }        // if (length == 1 && nums[0] == 0) {        //     return 1;        // }                // for (int i = 1; i < length; i++) {        //     if (nums[i] != i) {        //         return i - 1;        //     }         // }        // return length;    }}


0 0