代码改变世界

leetcode - Search in Rotated Sorted Array

2013-11-05 22:35  张汉生  阅读(156)  评论(0)    收藏  举报

 

 1 class Solution {
 2 public:
 3     int search(int A[], int n, int target) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         if (n<=0)
 7             return -1;
 8         int left = 0, right = n-1;
 9         int middle;
10         while (left<=right){
11             if (A[left]==target)
12                 return left;
13             if (A[right]==target)
14                 return right;
15             middle = (left+right)/2;
16             if (A[middle]==target)
17                 return middle;
18             if (A[middle]>target){
19                 if (A[right]>target){
20                     if (A[middle]>A[right])
21                         left = middle+1;
22                     else right = middle-1;
23                 }
24                 else right = middle-1;
25             }
26             if (A[middle]<target){
27                 if (A[right]>target)
28                     left = middle+1;
29                 else {
30                     if (A[right]>A[middle])
31                         right = middle-1;
32                     else 
33                         left = middle+1;
34                 }
35             }
36         }
37         return -1;
38     }
39 };