[LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索

 1 class Solution {
 2 public:
 3     int search(vector<int>& nums, int target) {
 4         int l = 0, r = nums.size()-1;
 5         while(l<=r){
 6             int mid = l + (r-l)/2;
 7             int curr = nums[mid];
 8             int rval = nums[r];
 9             int lval = nums[l];
10             if(target==curr) return mid;
11             // 后半有序,改等号是需要判断是否可能只有两个数
12             if(curr<=rval){
13                 // 在此区间内
14                 if(target>curr && target<=rval)
15                     l = mid+1;
16                 else
17                     r = mid-1;
18             } else {
19                 // 前半段有序且在区间内
20                 if(target>=lval && target<curr)
21                     r = mid-1;
22                 else
23                     l = mid+1;
24             }
25         }
26         return -1;
27     }
28 };

 

posted @ 2021-02-10 23:02  张王李代茂  阅读(47)  评论(0)    收藏  举报