求解旋转数组的最小数字

题目描述:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小数组。例如数组{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
相关文章:
如何用PHP快速搭建高效网站?分步指南
魔毅自助建站系统:模板定制与SEO优化一键生成指南
建站主机解析:虚拟主机配置与服务器选择指南
浅谈Javascript中的Label语句
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
南宁网站建设制作定制,南宁网站建设可以定制吗?
网站制作网站,深圳做网站哪家比较好?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
焦点电影公司作品,电影焦点结局是什么?
香港服务器租用每月最低只需15元?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
网站企业制作流程,用什么语言做企业网站比较好?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
已有域名建站全流程解析:网站搭建步骤与建站工具选择
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站主机如何安装配置?新手必看操作指南
如何选择靠谱的建站公司加盟品牌?
如何高效搭建专业期货交易平台网站?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
建站主机与服务器功能差异如何区分?
建站主机SSH密钥生成步骤及常见问题解答?
建站之星安装路径如何正确选择及配置?
如何用西部建站助手快速创建专业网站?
如何通过万网虚拟主机快速搭建网站?
ui设计制作网站有哪些,手机UI设计网址吗?
如何访问已购建站主机并解决登录问题?
如何在阿里云虚拟主机上快速搭建个人网站?
开源网站制作软件,开源网站什么意思?
济南专业网站制作公司,济南信息工程学校怎么样?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何通过主机屋免费建站教程十分钟搭建网站?
建站之星如何实现五合一智能建站与营销推广?
建站主机功能解析:服务器选择与快速搭建指南
网站制作报价单模板图片,小松挖机官方网站报价?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站之星如何优化SEO以实现高效排名?
如何挑选优质建站一级代理提升网站排名?
制作网站的软件免费下载,免费制作app哪个平台好?
家庭服务器如何搭建个人网站?
活动邀请函制作网站有哪些,活动邀请函文案?
如何通过西部建站助手安装IIS服务器?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何选择适合PHP云建站的开源框架?
代刷网站制作软件,别人代刷火车票靠谱吗?
一键网站制作软件,义乌购一件代发流程?
建站之家VIP精选网站模板与SEO优化教程整合指南
高防服务器租用指南:配置选择与快速部署攻略
宝塔建站助手安装配置与建站模板使用全流程解析
*请认真填写需求信息,我们会在24小时内与您取得联系。