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;
    }
}
相关推荐
lxh011310 分钟前
最长递增子序列
前端·数据结构·算法
Youyzq1 小时前
前端项目发布到cdn上css被编译失效问题rgba失效和rgb失效
前端·css·算法·cdn
风筝在晴天搁浅1 小时前
代码随想录 516.最长回文子序列
算法
菜鸟233号1 小时前
力扣513 找树左下角的值 java实现
java·数据结构·算法·leetcode
亭上秋和景清1 小时前
指针进阶:函数指针详解
开发语言·c++·算法
leoufung1 小时前
LeetCode 22:Generate Parentheses 题解(DFS / 回溯)
算法·leetcode·深度优先
断剑zou天涯2 小时前
【算法笔记】bfprt算法
java·笔记·算法
youngee112 小时前
hot100-47岛屿数量
算法
无限进步_3 小时前
深入理解 C/C++ 内存管理:从内存布局到动态分配
c语言·c++·windows·git·算法·github·visual studio
长安er4 小时前
LeetCode 34排序数组中查找元素的第一个和最后一个位置-二分查找
数据结构·算法·leetcode·二分查找·力扣