陣列簡單 牛客NC.101缺失數字 leetcode劍指 Offer 53 - II. 0~n-1中缺失的數字
阿新 • • 發佈:2020-12-09
問題描述
一個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有一個數字不在該陣列中,請找出這個數字。
示例 1:
輸入: [0,1,3]
輸出: 2
示例 2:
輸入: [0,1,2,3,4,5,6,7,9]
輸出: 8
思路
看就有序就想到二分查詢
通過比較下標和元素值就能得知缺失數字在左邊還是右邊
下標等於元素值缺失數字在中間值的右邊
下標小於元素值缺失數字在中間值或著中間值的左邊。
最後迴圈結束找到元素,
下標等於元素值缺失數字在元素的右邊
class Solution {
public int missingNumber(int[] nums) {
int left = 0, right = nums.length-1, mid;
while(left < right){
mid = left + (right - left)/2;
if(mid == nums[mid]){
left = mid + 1;
}else{
right = mid;
}
}
if(nums[left] == left){
return nums[left] + 1;
}else{
return nums[left] - 1;
}
}
}