1. 程式人生 > 其它 >陣列簡單 牛客NC.101缺失數字 leetcode劍指 Offer 53 - II. 0~n-1中缺失的數字

陣列簡單 牛客NC.101缺失數字 leetcode劍指 Offer 53 - II. 0~n-1中缺失的數字

技術標籤:# 陣列leetcode

Offer 53 - II. 0~n-1中缺失的數字

問題描述

一個長度為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; } } }