LeetCode#268. Missing Number

来源:互联网 发布:网络摄像机排行榜 编辑:程序博客网 时间:2024/05/22 10:37
  • 题目:一个数组包含0,1,…. ,n中的n个不同的数字,求这个数组缺失的那个数字
  • 难度:Easy
  • 思路:先求出数组的长度,根据数学连续数字求和公式求出本来应该得到的和,再求出数组的实际和,两者的差就是缺失的数字
  • 代码:
public class Solution {    public int missingNumber(int[] nums) {        int len = nums.length;        //先求出0到n的和        int expect = len*(len+1)/2;        //求出实际数组的元素总和        int actual = 0;        for(int i = 0; i < len; i++){            actual += nums[i];        }        int result = expect - actual;        return result;    }}

  • 通过二分查找求出缺失的值
public class Solution {    public int missingNumber(int[] nums) {        int len = nums.length;        int left = 0;        int right = len-1;        while(left < right){            int mid = left + (right-left)/2;            if(nums[mid] > mid){                right = mid;//注意此处right不是等于mid-1            }else{                left = mid+1;            }        }        return left;    }}
0 0