weixin_43306709 2022-04-18 11:51 采纳率: 77.3%
浏览 16
已结题

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

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

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;
    }
};
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-04-18 12:06
    关注

    如有帮助,请采纳!

    
    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集