当前位置: 首页 > news >正文

力扣中等 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

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;}
}```

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言 | Leetcode C语言题解之第415题字符串相加
  • proteus仿真学习(1)
  • 机器人的动力学——牛顿欧拉,拉格朗日,凯恩
  • ARM/Linux嵌入式面经(三八):绿盟科技
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 谈谈黑盒测试方法
  • c语言中“qsort函数”和“结构体成员访问变量”
  • QTPropertyBrowser属性表控件:新增自定义属性类型
  • 【专题】2024中国生物医药出海现状与趋势蓝皮书报告合集PDF分享(附原数据表)
  • 数据结构|二叉搜索树
  • 基于JAVA+SpringBoot+Vue的医院资源管理系统
  • JS领域的AI工程利器分享
  • 【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
  • BFS 解决多源最短路问题
  • 不同编程语言的互相调用
  • Android优雅地处理按钮重复点击
  • js递归,无限分级树形折叠菜单
  • Python爬虫--- 1.3 BS4库的解析器
  • SAP云平台里Global Account和Sub Account的关系
  • vue数据传递--我有特殊的实现技巧
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 安卓应用性能调试和优化经验分享
  • 测试开发系类之接口自动化测试
  • 分布式任务队列Celery
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于axios的vue插件,让http请求更简单
  • 力扣(LeetCode)965
  • 聊聊flink的TableFactory
  • 日剧·日综资源集合(建议收藏)
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信小程序开发问题汇总
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 数据可视化之下发图实践
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # Maven错误Error executing Maven
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (12)Hive调优——count distinct去重优化
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (70min)字节暑假实习二面(已挂)
  • (Note)C++中的继承方式
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)正点原子I.MX6ULL u-boot移植
  • (二十四)Flask之flask-session组件
  • (附源码)php新闻发布平台 毕业设计 141646
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十七)Flink 容错机制
  • (十一)图像的罗伯特梯度锐化
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • ***通过什么方式***网吧
  • .NET CLR基本术语
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net