求解旋转数组的最小数字
发布时间 - 2026-01-11 01:24:32 点击率:次求解旋转数组的最小数字

题目描述:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小数组。例如数组{3,4,5,1,2}是数组{1,2,3,4,5}的旋转数组,该数组的最小值为1。
思路解析:
O(N)的算法
这种算法的思想就是遍历这个数组,由于这个数组是两部分有序的数组,因此遍历这个数组时当后一个数字小于前一个数字时,则后一个(即较小)一定为整个数组中最小的数字。
这种算法的思想很简单,但就是时间复杂度较大,因此不是很好的算法。
int minNumberInRotateArray(vector<int> rotateArray)
{
if (rotateArray.empty())
return -1;
unsigned int i=0;
for (; i<rotateArray.size()-1; i++)
{
if (rotateArray[i] > rotateArray[i+1])
break;
}
return rotateArray[i+1];
}
O(logN)的算法
这种算法思想类似于二分查找,首先每次找到数组中中间的数字mid,如果mid大于最左端left,说明最小数在mid的右侧区间,则改变left,置left为mid;如果mid小于数组右侧right,说明最小数在mid的左侧区间,则改变right为mid….当left的数字小于等于right的数字时,说明已经找到最小数,这个也是循环结束的条件
int minNumberInRotateArray(vector<int> rotateArray)
{
if (rotateArray.empty())
return -1;
unsigned int left=0;
unsigned int right=rotateArray.size()-1;
unsigned int mid=left;
while (rotateArray[left] >= rotateArray[right])
{
if (right-left == 1)
{
mid = right;
break;
}
mid = left+((right-left)>>1);
if (rotateArray[mid]==rotateArray[left] && rotateArray[right]==rotateArray[mid])
return rotateArray[mid];
if (rotateArray[mid] >= rotateArray[left])
left = mid;
else if (rotateArray[mid] <= rotateArray[right])
right = mid;
}
return rotateArray[mid];
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 旋转数组的最小数字
# 旋转数组
# C++中求旋转数组中的最小数字(经典面试题)
# C语言输出旋转后数组中的最小数元素的算法原理与实例
# java旋转二维数组实例
# C++实现旋转数组的二分查找
# 遍历
# 组中
# 左端
# 很好
# 希望能
# 很简单
# 较小
# 谢谢大家
# 类似于
# 搬到
# 两部分
# 值为
# 但就
# 若干个
# 称之为
# class
# brush
# pre
# br
# strong
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
太平洋网站制作公司,网络用语太平洋是什么意思?
C#如何调用原生C++ COM对象详解
韩国服务器如何优化跨境访问实现高效连接?
如何快速启动建站代理加盟业务?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
如何快速搭建二级域名独立网站?
微信推文制作网站有哪些,怎么做微信推文,急?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel如何发送系统通知?(Notification渠道示例)
网站图片在线制作软件,怎么在图片上做链接?
如何快速搭建高效香港服务器网站?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
南京网站制作费用,南京远驱官方网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么在Blade中安全地输出原始HTML内容
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何在云虚拟主机上快速搭建个人网站?
MySQL查询结果复制到新表的方法(更新、插入)
JavaScript如何实现音频处理_Web Audio API如何工作?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
详解Android图表 MPAndroidChart折线图
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel如何创建自定义中间件?(Middleware代码示例)
iOS验证手机号的正则表达式
网站制作免费,什么网站能看正片电影?
如何在橙子建站中快速调整背景颜色?
微信小程序 require机制详解及实例代码
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何确保西部建站助手FTP传输的安全性?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
大连 网站制作,大连天途有线官网?
如何有效防御Web建站篡改攻击?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
如何正确下载安装西数主机建站助手?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何快速搭建高效可靠的建站解决方案?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
中国移动官方网站首页入口 中国移动官网网页登录
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何获取上海专业网站定制建站电话?

