LeetCode-0到n-1中缺失的數字
阿新 • • 發佈:2020-12-04
非商業,LeetCode連結附上:
https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/
進入正題。
題目:
一個長度為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 <= 陣列長度 <= 10000
程式碼實現:
public int missingNumber(int[] nums) { int i = 0, j = nums.length - 1; while(i <= j) { int m = (i + j) / 2; if(nums[m] == m) { i = m + 1; } else { j = m - 1; } } return i; } //時間複雜度O(logN),空間複雜度O(1)
分析:
根據題意,“遞增排序陣列”,首先考慮二分法查詢目標元素;
目標元素會在值和索引相等的右側陣列出現,因此記錄並更新對應的索引,直到陣列都遍歷完。
--End