https://leetcode.com/problems/missing-number/
先求出nums中最大的数max,然后根据等差数列求和公式求出1到max的所有数的和,然后再减去nums中所有数的和的差就是少的那个数!!
注意,当nums中没有0或者有0而且0到max都有的两种特殊情况,前者输出0,后者输出max + 1;
public class Solution {
public int missingNumber(int[] nums) {
int sum = 0;
int max = Integer.MIN_VALUE;
int flag = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 0) {
flag = 1;
}
if (nums[i] > max) {
max = nums[i];
}
sum += nums[i];
}
int total = max * (max + 1) / 2;
if (total - sum == 0) {
if (flag == 1) {
return max + 1;
}
else
return 0;
}
else {
return total - sum;
}
}
}