4/12/2014

Leetcode -- Search in Rotated Sorted Array

 class Solution {  
 public:  
   int search(int A[], int n, int target) {  
     int pivot = 0;  
     for(int i = 0; i < n - 1 ; ++i) {  
       if(A[i] > A[i + 1]) {  
         pivot = i;  
         break;  
       }  
     }  
     int start = 0;  
     int end = n - 1;  
     if(target >= A[0] && target <= A[pivot]) {  
       start = 0;  
       end = pivot;  
     } else if(target >= A[pivot + 1] && target <= A[n - 1]) {  
       start = pivot + 1;  
       end = n - 1;  
     }  
     while(start <= end) {  
       int middle = (start + end) / 2;  
       if(A[middle] == target) {  
         return middle;  
       } else if(A[middle] > target) {  
         end = middle - 1;  
       } else {  
         start = middle + 1;  
       }  
     }  
     return -1;  
   }  
 };  

No comments: