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

力扣面试150题--搜索旋转排序数组

Day 84

题目描述

在这里插入图片描述

思路

标准二分查找要求数组完全有序,但旋转排序数组可以通过以下步骤处理:

  1. 确定中点 mid:计算 mid = beg + (end - beg) / 2,避免整数溢出。
  2. 判断左右哪部分有序:
    如果 nums[beg] <= nums[mid],说明左半部分 [beg, mid] 有序。
    否则,右半部分 [mid, end] 有序
  3. 缩小搜索范围:
    如果目标值 target 在有序部分的范围内,则在该部分继续搜索。
    否则,在另一部分搜索
class Solution {public int search(int[] nums, int target) {int beg=0;int end=nums.length-1;while(beg<=end){int mid=beg+(end-beg)/2;if(target==nums[mid]){return mid;}if(nums[beg]<=nums[mid]){//左半有序if(target<=nums[mid]&&target>=nums[beg]){end=mid-1;}else{beg=mid+1;}}else{//右半有序if(target>nums[mid]&&target<=nums[end]){beg=mid+1;}else{end=mid-1;}}}return -1;}
}
http://www.xdnf.cn/news/1175221.html

相关文章:

  • 开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端
  • C#知识点表格大全
  • HDFS写性能优化技巧详解:从理论到实践
  • CSS 基础
  • 【科研绘图系列】R语言绘制黑白填充等显著性标记条形图
  • 网安-SQL注入-sqli-labs
  • 内积(Inner Product)和余弦相似度区别
  • LeetCode热题100--205
  • 糖尿病数据分析:血压与年龄关系可视化
  • 变频器带动电机:全方位解析参数变化
  • SparkSQL 聚合函数 MAX 对 NULL 值的处理
  • Linux -- 进程【下】
  • Python Day22 - 复习日
  • 如何用 Kafka + Redis + 线程池搭建高吞吐异步消息处理架构
  • 数据结构自学Day13 -- 快速排序--“前后指针法”
  • 西门子 S7-1500分布式 I/O通信 :PROFINET IO 与 PROFIBUS DP详解(下)
  • 电流、电压采集电路分析
  • 轻量化RTSP视频通路实践:采集即服务、播放即模块的工程解读
  • 【Windows命令手册】Windows中的常用命令,并与 Linux 做比较
  • Zookeeper学习专栏(七):集群监控与管理
  • FastGPT + Kymo:解锁企业专属知识库与智能体开发新体验
  • 【LeetCode 热题 100】78. 子集——(解法二)回溯+选哪个
  • Unity × RTMP × 头显设备:打造沉浸式工业远控视频系统的完整方案
  • AI营销核心技术解析:运作机制与行业应用实例
  • 炬森精密:缓冲滑轨的创新力量,重塑家居静音与安全新体验
  • 力扣MySQL(1)
  • 解构未来金融:深入剖析DeFi与去中心化交易所(DEX)的技术架构
  • 力扣(LeetCode) ——轮转数组(C语言)
  • Linux 723 磁盘配额 限制用户写入 quota;snap快照原理
  • GraphQL批量查询优化:DataLoader如何让数据库访问速度飞起来?