題目:乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。
示例:
示例 1:示例 2:輸入: [0,1,3]
輸出: 2
輸入: [0,1,2,3,4,5,6,7,9]解釋:[0,1]表示陣列長度為n-1=2,所以n=3,共有3個數字,所以在之間的是[0,1,2];不能理解為只有2個數字,不缺失數字。這一點很重要。輸出: 8
思想1:兩次迴圈,不建議使用,沒有充分利用有序。
int
missingnumber
(vector<
int>
& nums)
int sum1 =0;
int sum2 =0;
for(
int i =
0;i <=nums.
size()
;i++
)for
(int i =
0;i < nums.
size()
;i++
)return sum1-sum2;
;}
思想2:一次迴圈 o(n)
int
missingnumber
(vector<
int>
& nums)
}//表示缺失的元素是末尾的,nums.size=n-1,所以返回n-1即可.
return nums.
size()
;}
思想3:二分查詢,o(logn)建議使用
//用二分法,它是0~n-1的資料在對應0~n-1的位置上放著,所以可以利用下標和資料是否相等來判斷,如果mid==nums[mid]那就
//表示前面的資料存放都正確,那麼l=mid+1,如果不等表示前面已經有了缺失的資料,所以r=mid-1,一次類推,直至l>r就返回mid+1
intmissingnumber2
(vector<
int>
& nums)
else
//左半部分有問題
}return l;
}
加油哦!?。 面試題53 II 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 要點 遞增,有序,特點 ...
面試題53 II 0 n 1中缺失的數字
題目 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。示例1 輸入 0,1,3 輸出 2 方法一 二分法 可以發現規律,如果下標 index nums index 的話,所缺的值在中...
面試題53 II 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 class solution el...