您的位置:首页 > 其它

[leetcode] Missing Number

2015-11-22 20:58 253 查看
题目:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: