题目内容
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?
题目分析
样例很有迷惑性,也会出现 nums=[3,0,1]的情况,面对这种情况。
要在线性时间内完成
考虑到,每个字符和它的下标满足一一对应的关系,与位置无关,所以可以对数组中的数字不断与它自身的下标做差,然后求和,所得结果与,nums.length求和即可。
public class Solution {
public int missingNumber(int[] nums) {
int sum = 0, i = 0;
for (; i < nums.length; i++)
sum = sum + i - nums[i];
return (sum + i);
}
}