码迷,mamicode.com
首页 > 其他好文 > 详细

Missing Number

时间:2015-11-22 21:38:11      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

分析:

方法一:根据元素的顺序,进行异或^操作:

public int missingNumber(int[] nums) {

    int xor = 0, i = 0;
    for (i = 0; i < nums.length; i++) {
        xor = xor ^ i ^ nums[i];
    }

    return xor ^ i;
}

方法二:利用数学求和,用期望值减去实际值即可:

    public int missingNumber(int[] nums) {
        int sum = 0;
        for(int i : nums) {
            sum += i;
        }
        int n = nums.length;
        int tmp = (n+1)*n/2;
        return tmp-sum;
    }

 

Missing Number

标签:

原文地址:http://www.cnblogs.com/lasclocker/p/4986726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!