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;

    }
};

 

posted @ 2021-07-16 13:03  三一一一317  阅读(26)  评论(0)    收藏  举报