劍指 Offer 53 - II. 0~n-1中缺失的數字(二分法)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
解法一:二分法
- 時間複雜度 O(logN): 二分法為對數級別複雜度。
- 空間複雜度 O(1): 幾個變數使用常數大小的額外空間。
class Solution {
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;
}
}
相關文章
- 每日一練(25): 0~n-1中缺失的數字
- 劍指 Offer 57 - II. 和為s的連續正數序列
- 劍指 Offer 59 - II. 佇列的最大值佇列
- 劍指 Offer 14- II. 剪繩子 II
- 每日一題 - 劍指 Offer 53 - I. 在排序陣列中查詢數字 I每日一題排序陣列
- 劍指Offer--陣列中重複的數字陣列
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 【劍指offer】二進位制中1的個數
- 劍指 Offer 44. 數字序列中某一位的數字
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 53. 最大子序和(劍指 Offer 42)
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 劍指 Offer 10- II. 青蛙跳臺階問題JavaJava
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 劍指 Offer 15. 二進位制中1的個數
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 劍指Offer 表示數值的字串字串
- 劍指 offer(1) -- 陣列篇陣列
- 【劍指offer中等部分4】二進位制中1的個數(java)Java
- 【劍指offer】【1】二維陣列中的查詢陣列
- 劍指OFFER
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 【劍指 Offer 】17. 列印從1到最大的n位數
- 劍指offer | 17. 列印從1到最大的n位數
- 劍指offer之列印超過陣列一半的數字陣列
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- LeetCode|劍指 Offer 49.醜數LeetCode
- 劍指offer第49題 醜數
- [劍之offer] 03 陣列中重複的數字陣列
- 劍指 Offer 列印從1到最大n位數c++C++
- 1. 二位陣列中的查詢(劍指offer)陣列
- 劍指Offer系列之「表示數值的字串」字串