問題描述:
從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判斷到陣列最後一位,如果下...