二分查找旋转数组做的时候遇到问题了,但不知道怎么解决

问题遇到的现象和发生背景

https://leetcode-cn.com/problems/search-in-rotated-sorted-array/

问题相关代码,请勿粘贴截图
class Solution {
public:
    int search(vector<int>& nums, int target) {
    if(nums.size() == 1){
        if(nums[0]!=target) return -1;
        else    return 0;
    }
    int i;
    for(i = 0;i<nums.size();i++){
        if(nums[i]>nums[i+1])
            break;
    }
    int l = nums[i]<target?-1:i;
    int r = nums[i]<target?i+1:nums.size();
    int mid;
    while(l+1!=r){
        mid = (l+r)/2;
        if(nums[mid]>target)
            r = mid;
        else if(nums[mid]<target)
            l = mid;
        else
            return mid;
    }
    return -1;
    }
};
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

如有帮助,请采纳!


int search(vector<int>& array, int key){
    int l = 0;
    int r = nums.size();
    int mid =0;
    while(l<=r){
        mid = (l+r)/2;
        //mid = l+(r-l)/2;
        if(key==array[mid])
            return mid;
        else if(key<array[mid]){
            r = mid-1;
            continue;
        }
        else{
            l = mid+1;
            continue;
        }
    }
    return -1;
}