leetcode-33. 搜索旋转排序数组
class Solution { public: int search(vector<int>& nums, int target) { int len = nums.size(); // if(len<2) // return 0; int left = 0; int right = len-1; // int mid = (left+right)/2; for(int i = 0 ;i < nums.size();i++){ cout<<"nums: "<<i<<" "<<nums[i]<<endl; } while(left<=right){ int mid = (left+right)/2; cout<<"flag: "<<left<<" "<<right<<endl; cout<<"flag1: "<<mid<<" "<<nums[mid]<<endl; if(nums[mid] == target) return mid; // 因为mid比较过了,所以不可能相等,下面与nums[mid]比较时,可以把等号去掉。 if(nums[0]<=nums[mid]){ if(nums[0]<=target&&nums[mid]>target) right = mid-1; else left = mid+1; }else{ if(target>nums[mid]&&target<=nums[len-1]) left = mid+1; else right = mid-1; } } return -1; } };