LintCode easy 二分查詢

2021-07-23 18:04:32 字數 658 閱讀 7331

二分查詢

描述 筆記

資料 評測

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

您在真實的面試中是否遇到過這個題? yes

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

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

標籤 二分法 陣列

相關題目

class solution 

if(target!=array[mid]) return -1;

return mid;

}};

參考:

總結:

1.為什麼mid=(high - low) / 2 + low; // 直接使用(high + low) / 2 可能導致溢位

答:因為high+low的值可能超過能表示的最大範圍

2.在if(target==array[mid]) high=mid;中,為什麼不直接返回mid?

答:因為陣列中有可能有兩個相同的值,你無法確定這是第乙個在陣列中出現的

3.注意迴圈條件是low

LeetCode Python 704 二分查詢

給定乙個n個元素有序的 公升序 整型陣列nums和乙個目標值target,寫乙個函式搜尋nums中的target,如果目標值存在返回下標,否則返回 1。示例 1 輸入 nums 1,0,3,5,9,12 target 9輸出 4解釋 9 出現在nums中並且下標為 4示例 2 輸入 nums 1,0...

關押罪犯 並查集 二分

s 城現有兩座監獄,一共關押著n 名罪犯,編號分別為1 n。他們之間的關係自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發衝突。我們用 怨氣值 乙個正整數值 來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他...

擴散(二分答案 並查集)

乙個點每過乙個單位時間就會向四個方向擴散乙個距離,兩個點a b連通,記作e a,b 當且僅當a b的擴散區域有公共部分。連通塊的定義是塊內的任意兩個點u v都必定存在路徑e u,a0 e a0,a1 e ak,v 給定平面上的n給點,問最早什麼時刻它們形成乙個連通塊。我們可以二分答案,然後對於每個時...