问题描述:
n+1个数:0,1,2...,n
在这些数里面丢失了一个数,剩下了n个数存储到数组中。要找出这个丢失的数是哪个
解决:
因为这n+1个数是从0开始公差为1的等差数列,可以通过公式求和。数组中的n个数也可以通过遍历累加求和。这两个和的差值就是丢失的数值。
/*
* 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.
*/
public class MissingNumber {
public int missingNumber(int[] nums) {
if(nums == null || nums.length == 0) {
return 0;
}
int sum = 0;
int n = nums.length;
for(int i:nums) {
sum += i;
}
return (int) (0.5*n*(n+1)-sum);
}
}