劍指Offer之0 n 1中缺失的數字

2021-10-07 05:09:10 字數 579 閱讀 6105

題目描述:

乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。

思路分析:

可以考慮用二分法來解決問題:令mid = (left + right) / 2;

public

intmissingnumber

(int

nums)

return left;

}

小結:

最後為什麼返回的是left?

當left == right時:

nums[mid] == mid; left = mid + 1;left > right;說明left左邊的數字都不缺,缺失的在後面,那麼就返回越界的下標left即可;

nums[mid] != mid; right = mid - 1;left >right;說明缺失的數字在左邊,而在當前區間下左邊已經沒有數字了,此時left比mid小,left就是缺失的數字,返回left即可。

劍指offer53題 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 1.從0判斷到陣列最後一位,如果下...

0 n 1中缺失的數字

乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。分析 因為陣列是排序的,因此陣列中開始的一些數字與它們的下標相同。也就是說,0在下標為0的位置,1在下標為1的位置,以此類推。如果不在...

0 n 1中缺失的數字

題目 乙個長度為n 1的遞增陣列中所有的數字都是唯一的,並且每個數字都在範圍0 n 1之內,在範圍內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。第乙個方法先遍歷,求出所有資料的和,再利用公式,找出缺失的資料的值。第二個方法,利用二分查詢,找出缺失的數字。package helen.c ...