程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [LeetCode]Search in Rotated Sorted Array

[LeetCode]Search in Rotated Sorted Array

編輯:C++入門知識

[cpp] 
class Solution { 
//observation is the key, try to solve it by modifying binary search  
public: 
    int search(int A[], int n, int target) { 
        // Start typing your C/C++ solution below  
        // DO NOT write int main() function  
        int l = 0; 
        int r = n-1; 
        while (l <= r) 
        { 
            int mid = l+(r-l)/2; 
            if(A[mid] == target) return mid; 
            if (A[l] <= A[mid])//it is sorted in [l,mid], "=" contains an edge case:3, 1  
            { 
                if(A[mid] > target && A[l] <= target) 
                    r = mid-1; 
                else  
                    l = mid+1; 
            } 
            else//[mid,r] must be sorted, if [l,mid] not sorted  
            { 
                if(A[mid] < target && A[r] >= target) 
                    l = mid+1; 
                else  
                    r = mid-1; 
            } 
        } 
        return -1; 
    } 
}; 

class Solution {
//observation is the key, try to solve it by modifying binary search
public:
 int search(int A[], int n, int target) {
  // Start typing your C/C++ solution below
  // DO NOT write int main() function
  int l = 0;
  int r = n-1;
  while (l <= r)
  {
   int mid = l+(r-l)/2;
   if(A[mid] == target) return mid;
   if (A[l] <= A[mid])//it is sorted in [l,mid], "=" contains an edge case:3, 1
   {
    if(A[mid] > target && A[l] <= target)
     r = mid-1;
    else
     l = mid+1;
   }
   else//[mid,r] must be sorted, if [l,mid] not sorted
   {
    if(A[mid] < target && A[r] >= target)
     l = mid+1;
    else
     r = mid-1;
   }
  }
  return -1;
 }
};

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved