题目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/26/others/69/
题目描述:
给定一个包含 0, 1, 2, ..., n
中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1] 输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1] 输出: 8
说明:
你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?
//自己的硬(sha)核(bi)破解
class Solution {
public int missingNumber(int[] nums) {
if(nums[0]==0&&nums.length==1){
return 1;
}
Arrays.sort(nums);
if(nums[0]!=0){
return 0;
}
int res=1;
for(int j=0;j<nums.length-1;j++){
if(nums[j+1]-nums[j]>1){
res = nums[j+1]-1;
break;
}else{
res++;
}
}
return res;
}
}
//大神思路:等差数列求和 减去 原本却了一个的数列 = 缺少的。
class Solution {
public int missingNumber(int[] nums) {
int sum=0;
int len = nums.length;
for(int i=0;i<len;i++){
sum=sum+nums[i];
}
int sum2= len*(len+1)/2;
int res=sum2 - sum;
return res;
}
}