33. 搜索旋转排序数组

33. 搜索旋转排序数组

转化为两次二分。

java 复制代码
class Solution {
    public int search(int[] nums, int target) {
        int l = 0, r = nums.length - 1;

        // 找到分隔点,大于nums[0]的最后一个数(最大的数)
        while(l < r){
            int mid = l + r + 1 >> 1;
            if(nums[0] > nums[mid]) r = mid - 1;
            else l = mid;
        }

        if(nums[0] > target) r = nums.length - 1;
        else l = 0;

        // 在有序数组中找目标值
        while(l < r){
            int mid = l + r + 1 >> 1;
            if(nums[mid] > target) r = mid - 1;
            else l = mid;
        }

        return nums[l] == target ? l : -1;
    }
}
相关推荐
NAGNIP5 小时前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP5 小时前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮5 小时前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法
爱理财的程序媛11 小时前
openclaw 盯盘实践
算法
MobotStone14 小时前
Google发布Nano Banana 2:更快更便宜,图片生成能力全面升级
算法
颜酱18 小时前
队列练习系列:从基础到进阶的完整实现
javascript·后端·算法
用户57573033462418 小时前
两数之和:从 JSON 对象到 Map,大厂面试官到底在考察什么?
算法
程序猿追18 小时前
“马”上行动:手把手教你基于灵珠平台打造春节“全能数字管家”
算法
ZPC82101 天前
docker 镜像备份
人工智能·算法·fpga开发·机器人