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

牛客 - 旋转数组的最小数字

描述

有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。

数据范围: 1≤n≤100001≤n≤100001n10000,数组中任意元素的值: 0≤val≤100000≤val≤100000val10000
要求:空间复杂度:O(1)O(1)O(1) ,时间复杂度:O(logn)O(logn)O(logn)

示例1
输入:[3,4,5,1,2]
返回值:1

示例2
输入:[3,100,200,3]
返回值:3

方法:

问题性质​​:旋转数组由两个递增子数组组成(如 [3,4,5,1,2])。最小值位于第二个子数组的首位(旋转点)。
​​二分查找​​:通过比较中间元素与右边界元素,逐步缩小搜索范围。
​​重复元素处理​​:当中间值等于右边界值时,通过 right–跳过重复项,避免错误分区。

class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型vector * @return int整型*/int minNumberInRotateArray(vector<int>& nums) {// write code hereint left = 0;int right = nums.size() - 1;while(left < right){int mid = (left + right) / 2;if(nums.at(mid) > nums.at(right)){left = mid + 1;}else if(nums.at(mid) < nums.at(right)){right = mid;}else{right--;}}return nums.at(left);}
};
http://www.xdnf.cn/news/16847.html

相关文章:

  • MySQL 内置函数
  • Anthropic最新研究Persona vector人格向量
  • Python正则表达式使用指南:从基础到实战
  • 2025.8.2
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • 文心4.5开源测评:国产大模型的轻量化革命与全栈突破
  • 每日五个pyecharts可视化图表-bars(1)
  • SpringBoot启动项目详解
  • 详解Python标准库之命令行界面库
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 未来交通:元宇宙技术重塑出行体验
  • SLAM中的非线性优化-2D图优化之零空间实战(十六)
  • Selenium自动化:轻松实现网页操控
  • 归并排序(简单讲解)
  • MySQL 基础
  • linux source命令使用详细介绍
  • 浅拷贝与深拷贝的区别
  • Vue 响应式基础全解析2
  • Python Pandas.unique函数解析与实战教程
  • 24黑马SpringCloud的Docker本地目录挂载出现相关问题解决
  • 《JMM 与 happens-before 原则:并发编程的核心内存语义》
  • 网络常识-子网掩码
  • 暑期算法训练.13
  • stm32F407 实现有感BLDC 六步换相 cubemx配置及源代码(二)
  • 电脑系统中的BCD
  • 排序算法-堆排序
  • ARMv8/v9架构FAR_EL3寄存器介绍
  • Android 13/14/15 默认授权应用权限的实现方法
  • 《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》
  • 开疆智能Profinet转Modbus网关连接信捷PLC从站配置案例