leetcode 33

xiaoxiao2021-02-27  216

从循环排序的数组中搜索一个数:思路二分查找,如果nums[first]<=nums[mid] 则数组前半部分为排序好的序列,否则后半部分为排序好的序列,然后根据与目标查找数比较,开始在前半/后半部分进行二分查找。

class Solution {

public:     int search(vector<int>& nums, int target) {         int first = 0 , last = nums.size();                  while(first!=last){             const int mid = first   + (last - first)/2 ;         if(nums[mid] == target){             return mid;         }         if(nums[first]<=nums[mid]){           if(nums[first]<=target && target<nums[mid])           last=mid;           else           first = mid+1;         }         else{             if (nums[mid]<target && target<=nums[last-1])             first=mid+1;             else             last=mid;         }     }     return -1;     } };
转载请注明原文地址: https://www.6miu.com/read-9864.html

最新回复(0)