0~n-1中缺失的数字(简单)
2020年9月9日
题目来源:力扣
解题
- 双指针法
利用两端和永远等于数组长度的特点,头尾双指针往中间靠拢
class Solution {
public int missingNumber(int[] nums) {
int len=nums.length;
int l=0,r=nums.length-1;
while(l<=r){
if(nums[l]+nums[r]==len){
l++;
r--;
}
else if(nums[l]+nums[r]<len) return nums[r]+1;
else return nums[l]-1;
}
return nums[len-1]/2;
}
}
- 二分法
长度较长的感觉使用二分更好一些
class Solution {
public int missingNumber(int[] nums) {
int l=0,r=nums.length-1;
while(l<=r){
int c=l+(r-l)/2;
if(nums[c]==c) l=c+1;
else r=c-1;
}
return l;
}
}