1. 程式人生 > 其它 >力扣33、搜尋旋轉排序陣列

力扣33、搜尋旋轉排序陣列

1、二分法(4ms,69%;10.8MB,70%)

時間複雜度:O(log n)

空間複雜度:O(1)

 1 int search(vector<int>& nums, int target) {
 2         //這裡的empty()注意是空則返回真
 3        if(nums.empty())
 4        return -1;
 5        if(nums.size()==1)
 6        return nums[0]==target? 0:-1;
 7        int left=0,right=nums.size()-1;
 8        int
mid=0; 9 while(left<=right){ 10 mid=(left+right)/2; 11 if(nums[mid]==target) 12 return mid; 13 //這裡的=是細節,當兩者相等時是執行if而不是else 14 //if成立說明前半部分有序 15 if(nums[left]<=nums[mid]){ 16 if(target>=nums[left]&&target<nums[mid])
17 right=mid-1; 18 else 19 left=mid+1; 20 } 21 //else成立說明後半部分有序 22 else{ 23 if(target>nums[mid]&&target<=nums[right]) 24 left=mid+1; 25 else 26 right=mid-1
; 27 } 28 } 29 return -1; 30 }