劍指offer 缺失數字

2021-10-22 18:06:22 字數 546 閱讀 6001

問題描述:

從0,1,2,…,n這n+1個數中選擇n個數,組成有序陣列,請找出缺失的那個數,要求o(n)盡可能小。

測試用例:

1、[0,1,2,3,4,5,7]    輸出6

2、[0,1,2,3,4,5,6] 輸出7

解法一:

暴力匹配判斷a[i + 1] == a[i] + 1; 如果全滿足該條件,判斷首尾是否等於 0或n.

解法二: 二分查詢

若當前陣列下標等於當前位置的值,那麼缺失的數字在該位置的右邊,往右走。若小於當前位置的值,往左走

**實現:

public int solve (int a) 

// 往左走

if (mid < a[mid])

}// 判斷缺失數字是前乙個還是後乙個

return left == a[left] ? a[left] + 1 : a[left] - 1;

}

劍指Offer1 0 n 1中缺失的數字

題目 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。思路 首先就是遍歷 class solution for int i 0 i nums.length i return res ...

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

題目描述 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。思路分析 可以考慮用二分法來解決問題 令mid left right 2 public intmissingnumber i...

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