您的位置:首页 > 其它

【Leetcode】Missing Number

2015-12-01 11:23 381 查看
题目链接:https://leetcode.com/problems/missing-number/

题目:

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?

思路:

1、数组是0~n,所以可以利用数组和

2、用异或操作,让nums数组和0~n异或,重复的元素异或结果为0,最后结果就是miss number

算法1:

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


算法2:

public int missingNumber(int[] nums) {
int result = 0;
for(int i=0;i<nums.length;i++){
result ^= nums[i]^i;
}
result ^=nums.length;
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: