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;
    }
}
相关推荐
肥or胖2 分钟前
【LeetCode 热题 100】链表 系列
算法·leetcode·链表
Y.O.U..8 分钟前
力扣HOT100——102.二叉树层序遍历
数据结构·c++·算法·leetcode
wuqingshun31415932 分钟前
蓝桥杯 3. 密码脱落
c++·算法·职场和发展·蓝桥杯·深度优先
@Aurora.36 分钟前
数据结构手撕--【堆】
数据结构·算法
艾醒42 分钟前
探索大语言模型(LLM):语言模型从海量文本中无师自通
算法
种时光的人1 小时前
2025蓝桥省赛c++B组第二场题解
开发语言·c++·算法
艾醒1 小时前
探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码
算法
L_cl1 小时前
算法训练营 Day1
数据结构·算法
雾月551 小时前
LeetCode 1780 判断一个数字是否可以表示成三的幂的和
java·数据结构·算法·leetcode·职场和发展·idea