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 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符