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

【剑斩OFFER】算法的暴力美学——寻找旋转排序数组中的最小值

一、题目描述

二、算法原理

这道题目很显然是有二段性的,所以把数组分成两个部分,如上图;既然是求最小的值,其实就是求二分查找的查找最左端的二分模板的一样的题目:

循环条件:left < right 

求中间点的方式:int mid = left + ( right - left )/2

至于区域划分和 left 和 right 的移动问题上图已经讲述了,这里就不重复了。

这里有个问题:图片的 tmpi 内部能不能等于 arr [ left ]

答:不能,特殊实例:3 4  5  6  7,这个例子的没有旋转,当:

int tmpi = arr [ left ]

绿色区域:if:arr[ mid ]  < tmpi   right = mid

红色区域:else left = mid + 1

因为 tmpi = 3,所以不管 mid 落在那个区域,只会命中第二个条件:left = mid + 1

当:mid = 0 时,此时arr[mid]就是最小值,但是命中第二个条件之后 left = mid + 1,跳过最小值了,所以 tmpi = arr[ left ] 永远找不到最小值,只会找到最大值。

三、代码实现

class Solution {
public:int findMin(vector<int>& nums) {int left = 0, right = nums.size() - 1;int tmpi = nums[right];while(left < right){int mid = left + (right - left)/2;if(nums[mid] <= tmpi) right = mid;else left = mid + 1;}return nums[left];}
};

http://www.dtcms.com/a/605979.html

相关文章:

  • Linux:基础开发工具(一)
  • 下载和调用通义千问大模型
  • 易站网站建设怎么做淘宝客网站和APP
  • 网站开发模板系统网站建设 排行
  • 安卓C语言编译器 | 提高开发效率,便捷进行C语言编程
  • python中的鸭子类型
  • 基于球面透视投影模型的鱼眼图像校正算法matlab仿真
  • TCP连接还在吗?主机拔掉网线后再插上,连接会断开吗?
  • 网站设计规划教学设计wordpress 代码转义
  • 分享一个基于服务端地图服务裁剪的方法
  • 嵌入式Linux系统搭建本地JavaScript运行环境
  • 网站seo优化分析登录页面html模板
  • 从 0 到 1:Vue3+Django打造现代化宠物商城系统(含AI智能顾问)
  • 支持向量机(SVM)在脑电情绪识别中的学术解析与研究进展
  • dj网站建设广州有做虚拟货币网站
  • 音视频学习(七十):SVC编码
  • 营销型网站建设 ppt百度竞价广告怎么投放
  • 基于CNN-BiLSTM的室内WiFi指纹定位方法研究
  • Java八股文-01
  • 2025年11月13日 AI快讯
  • 凡科网站建设样品图seo优化关键词是什么意思
  • 力扣3703. 移除K-平衡子字符串
  • 美团龙猫大模型LongCat-Flash总结
  • C语言反编译器 | 探索C语言反编译技术的原理与应用
  • 不用wordpress建站开网站做代发
  • EDI二次开发 - 实现个性化需求的创新
  • 【AI软件开发设计】AutoDS-Free:卖家如何用 AI 搭一套零费用的代发系统?
  • 深圳网站建设服务清单建站哪家好就要用兴田德润
  • LMDeploy Docker部署FP8量化模型的详细指南
  • 网站建设的总体目标温州网站建设风格