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;
    }
}
相关推荐
@小码农20 分钟前
2025年北京海淀区中小学生信息学竞赛第二赛段C++真题
开发语言·数据结构·c++·算法
蓝域小兵35 分钟前
齐次方程组和非齐次方程组有什么区别
人工智能·算法·机器学习
0 0 042 分钟前
CCF-CSP第39次认证第三题——HTTP 头信息(HPACK)【C++】
开发语言·c++·算法
Data_agent1 小时前
1688按图搜索1688商品(拍立淘)API ,Python请求示例
爬虫·python·算法·图搜索算法
汉克老师1 小时前
2023年海淀区中小学信息学竞赛复赛(小学组试题第二题 回文时间 (time))
c++·算法·北京海淀中小学信息竞赛·模拟法
代码雕刻家1 小时前
1.9.课设实验-数据结构-图-校园跑最短路径
c语言·数据结构·算法·图论
white-persist1 小时前
【攻防世界】reverse | re1-100 详细题解 WP
c语言·开发语言·网络·汇编·python·算法·网络安全
.YM.Z2 小时前
【数据结构】:排序(二)——归并与计数排序详解
数据结构·算法·排序
武帝为此2 小时前
【数据结构之树状数组】
数据结构·算法
失败才是人生常态2 小时前
算法题归类学习
学习·算法