昨天晚上砍了一道演算法題,題目要求使用二分查詢陣列中某乙個值,唯一的不同是該陣列是在原始有序的情況下,按照某乙個點進行了旋轉,對於這個陣列,有乙個角度來思考問題,其關鍵思想是尋找旋轉點。對於旋轉陣列,主要看a[mid]和a[high]的大小,如果前者比後者大,說明陣列的後面來自於原來陣列的前面,則最小值肯定在後邊,反之,如果前者比後者小,那說明最小值在前邊。
做了幾個演算法,嘗試了,發現總是有幾個例子無法通過,最後參考了別人的乙個演算法,其關鍵思想是:首先找到陣列的旋轉點,然後每次先計算陣列的中間點mid,然後在這個旋轉點的基礎上,找到真實的中間點realmid,然後在這個真實的中間點的基礎上,進行二分查詢:
int search(vector& a, int target)
int rot = low;
low = 0;
high = a.size() - 1;
while (low <= high)
return -1;
}
1095 山脈陣列中查詢目標值 二分搜尋
描述 這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首...
二分查詢 目標值的最小下標和目標值的最大下標
1.我們使用的退出迴圈的條件為l r 2.找到目標值的最小下標,將大於和等於合併成為一種情況 a mid target,答案的下標存在與l 如果只有乙個target值的話,l存的就是唯一target值的下標 3.找到目標值的最大下標,將小於和等於合併成為一種情況 a mid target,答案的下標...
1095 山脈陣列中查詢目標值 三分 二分
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...