62 搜尋旋轉排序陣列

2022-08-11 05:12:12 字數 688 閱讀 9899

假設有乙個排序的按未知的旋轉軸旋轉的陣列(比如,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

還是二分法,關鍵就是想明白二分之後怎麼辦,前半和後半有什麼關係,有哪些情況?

分一半之後三種情況

1、正好中間就是target,找到了

2、前半是排好序的,a[mid]>=a[left],如果target在這個範圍,二分繼續查下去就行了

3、後半是排好序的,a[mid]所以重點還是從無序中找出有序,有序中找就成了常規的二分問題

1

int search(vector &a, int

target)

10if(a[mid]>=a[left])

14else17}

18else

22else25}

26}27return -1

;28 }

62 搜尋旋轉排序陣列

原題 你可以假設陣列中不存在重複的元素。您在真實的面試中是否遇到過這個題?是 給出 4,5,1,2,3 和target 0,返回 1 標籤二分法 陣列排序陣列 思路 原始想法是找到旋轉軸 i,找到後判斷target在哪個部分,在哪個部分就對哪個部分使用二分法。時間複雜度是i log n i ac c...

lintcode 搜尋旋轉排序陣列 62

假設有乙個排序的 按未知的旋轉軸旋轉的 陣列 比如,0 1 2 4 5 6 7可能成為 4 5 6 7 0 1 2 給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回 1。你可以假設陣列中不存在重複的元素。樣例 給出 4,5,1,2,3 和target 1,返回 2 給出 ...

搜尋旋轉排序陣列

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