搜尋旋轉排序陣列

2021-08-16 19:51:31 字數 847 閱讀 3262

假設有乙個排序的按未知的旋轉軸旋轉的陣列(比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2)。給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。

樣例 給出[4, 5, 1, 2, 3]和target=1,返回 2

給出[4, 5, 1, 2, 3]和target=0,返回 -1

挑戰 o(logn) time

#ifndef c62_h

#define c62_h

#include

#include

using

namespace

std;

class solution

int res2 = findnum(a, minpos, a.size() - 1, target);

if (res2 != -1)

return res2;

return -1;

}//陣列是由兩個遞增的子陣列構成的

//找到其分界點,也就是最小值所在的位置

int findmin(vector

&a)

mid = (l + r) / 2;

if (a[mid] >= a[l])

l = mid;

else

if (a[mid] <= a[r])

r = mid;

}return mid;

}//二分法查詢

int findnum(vector

&a, int i, int j, int target)

return -1;

}};#endif

搜尋旋轉排序陣列

假設有乙個排序的按未知的旋轉軸旋轉的陣列 比如,0 1 2 4 5 6 7 可能成為4 5 6 7 0 1 2 給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回 1。你可以假設陣列中不存在重複的元素。分析 特殊的陣列搜尋某一元素問題,二分法。這一題的難點在於如何尋找二分的...

搜尋旋轉排序陣列

題目 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別...

搜尋旋轉排序陣列

題目描述 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n ...