14 二分查詢

2021-08-14 20:33:48 字數 528 閱讀 7775

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

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

思路:1、target==array[mid]時,不能直接返回mid,需要繼續劃分,因為要找的是第一次出現的,因此我們還需要繼續向前找,即high = mid,直到low==high;

如果要找最後一次出現的,即low = mid;

2、如果要找的數不存在陣列中,最後必定low>high

class solution 

if(target > array[mid])

if(target == array[mid])}}

return -1;

}};

14 二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例 在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。思路 定三個座標,頭座標,尾座標,中間座標,每次判斷要查詢的...

14 二分查詢

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

14 二分查詢

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