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;
    }
}
相关推荐
SWAGGY..5 小时前
Linux系统编程:(十三)环境变量
java·linux·算法
Black蜡笔小新5 小时前
自动化AI算法训练服务器DLTM一体化训推平台构建企业专属AI能力中台
人工智能·算法·自动化
sjsjs115 小时前
力扣3558. 给边赋权值的方案数 I
算法·leetcode·职场和发展
hujinyuan201605 小时前
2025年12月中国电子学会青少年机器人技术等级考试试卷(四级) 真题+答案
算法·机器人
啦啦啦啦啦zzzz5 小时前
算法总结(双指针)
c++·算法·双指针
花间相见5 小时前
【LeetCode01】—— 无重复字符的最长子串:滑动窗口经典题详解
python·算法·leetcode
wabs6665 小时前
关于动态规划【力扣96.不同的二叉搜索树的递推公式怎么理解?】
算法·动态规划
QiLinkOS5 小时前
极客与商业思维的融合实践(1)
c语言·数据库·c++·人工智能·算法·开源协议
fu的博客5 小时前
【数据结构16】图:基于邻接矩阵、邻接表实现DFS/BFS
数据结构·算法
阿正的梦工坊6 小时前
【Rust】17-Send、Sync 与并发安全抽象
算法·安全·rust