lintcode 14 二分查詢

2022-03-29 17:58:06 字數 529 閱讀 9707

給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1。

樣例在陣列 [1, 2, 3, 3, 4, 5, 10] 中二分查詢3,返回2。

挑戰如果陣列中的整數個數超過了2^32,你的演算法是否會出錯?

標籤二分法 陣列

說明

普通的二分查詢,陣列中整數超過2^32會導致演算法出錯。

code

class solution 

return find;

}};

改進思路

若陣列長度大於2^32,則low, mid, high三個陣列下標均有可能超出int的表示範圍,可以採取的改進思路是:

拆分array陣列,使每個子陣列的長度均小於2^32,每個子陣列長度為size

將target與每個子陣列的頭尾比較,若存在target大於此陣列頭部且小於此陣列尾部,則對此陣列進行二分查詢

LintCode 14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。如果陣列中的整數個數超過了 2 32 你的演算法是否會出錯?在有序...

LintCode 14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。挑戰 如果陣列中的整數個數超過了2 32,你的演算法是否會出...

LintCode 14(二分查詢)

lintcode系列,第14題,題目 給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 樣例 1 輸入 1,4,4,5,7,7,8,9,9,10 1 輸出 0 樣例解釋 ...