lintcode筆記 經典二分查詢問題

2021-07-27 06:29:32 字數 1161 閱讀 9988

在乙個排序陣列中找乙個數,返回該數出現的任意位置,如果不存在,返回-1

樣例

給出陣列 [1, 2, 2, 4, 5, 5].

對於 target = 2, 返回 1 或者 2.

對於 target = 5, 返回 4 或者 5.

對於 target = 6, 返回 -1.

//最基礎的二分查詢演算法

#include

#include

#include

using

namespace

std;

class solution

int start=0;

int end=n-1;

while(start+1

< end)else

if(a[mid] < target)else

} if(a[start] == target)

if(a[end] == target)

return -1;

}};

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

樣例

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

加了一段往前搜尋第一次出現的**。。。好像不太優雅

#include 

#include

#include

using

namespace

std;

class solution

int start=0;

int end=n-1;

while(start+1

< end)

return mid;

}else

if(array[mid] < target)else

} if(array[start] == target)

if(array[end] == target)

return -1;

}};

LintCode 二分查詢

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

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,你的演算法是否會出...