力扣中等 33.搜索旋转排序数组

文章目录

题目介绍


题解

首先用 153. 寻找旋转排序数组中的最小值 的方法,找到 nums 的最小值的下标 i。

然后分类讨论:

  1. 如果 target>nums[n−1],在 [0,i−1] 中二分查找 target。

  2. 如果 target≤nums[n−1],那么:

    1. 如果 i=0,说明 nums 是递增的,直接在 [0,n−1] 中二分查找 target。

    2. 如果 i>0,那么 target 一定在第二段 [i,n−1] 中,在 [i,n−1] 中二分查找 target。

      ++这两种情况可以合并成:在 [i,n−1] 中二分查找 target++。

java 复制代码
class Solution {
    public int search(int[] nums, int target) {
        int n = nums.length, i = findMin(nums);
        if (target > nums[n - 1]) { // target 在第一段
            return lowerBound(nums, 0, i - 1, target); 
        }
        // target 在第二段
        return lowerBound(nums, i, n - 1, target); 
    }

    // 153. 寻找旋转排序数组中的最小值
    private int findMin(int[] nums) {
        int left = 0, right = nums.length - 2; // 闭区间 [0, nums.length - 2]
        while (left <= right) { 
            int mid = left + (right - left) / 2;
            if (nums[mid] < nums[nums.length - 1]) {
                right = mid - 1; 
            } else {
                left = mid + 1;               
            }
        }
        return left;
    }

    // 有序数组中找 target 的下标
    private int lowerBound(int[] nums, int left, int right, int target) {
        while (left <= right) { 
            int mid = left + (right - left) / 2;
            if (nums[mid] == target){
                return mid;
            }else if (nums[mid] < target) {
                left = mid + 1; 
            } else {
                right = mid - 1; 
            }
        }
        return -1;
    }
}```
相关推荐
2301_8002561126 分钟前
第九章:空间网络模型(空间网络查询、数据模型、Connected、with Recursive、pgRouting)
网络·数据库·算法·postgresql·oracle
逑之1 小时前
C语言笔记10:sizeof和strlen,指针与数组
c语言·笔记·算法
求梦8201 小时前
【力扣hot100题】旋转图像(15)
算法·leetcode·职场和发展
海边的Kurisu2 小时前
苍穹外卖日记 | Day1 苍穹外卖概述、开发环境搭建、接口文档
java
C雨后彩虹6 小时前
任务最优调度
java·数据结构·算法·华为·面试
heartbeat..6 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
Jing_jing_X6 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
少林码僧8 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)8 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
元Y亨H8 小时前
Nacos - 服务发现
java·微服务