1. 程式人生 > 實用技巧 >leetcode117:search-rotated-sorted-array

leetcode117:search-rotated-sorted-array

題目描述

給出一個轉動過的有序陣列,你事先不知道該陣列轉動了多少
(例如,0 1 2 4 5 6 7可能變為4 5 6 7 0 1 2).
在陣列中搜索給出的目標值,如果能在陣列中找到,返回它的索引,否則返回-1。
假設陣列中不存在重複項。

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.


示例1

輸入

複製
[1],0

輸出

複製
-1


class Solution { public: int search(int A[], int n, int target) { if(A == nullptr||n==0) return -1; int left = 0; int right = n-1; while(left<=right){ int mid = left + (right - left)/2; if(A[mid] == target)
return mid; if(A[left] <= A[mid]){ if(A[left]<=target&&A[mid]>target) right = mid-1; else left = mid+1; } else{ if(A[mid]<target&&A[right]>=target) left = mid+1; else right = mid-1; } } return -1; } };