剑指offer面试题[8]-旋转数组的最小数字
题目描述
public:
int minNumberInRotateArray(vector<int> rotateArray) {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if(n==0)
return 0;
for(int i=0;i<n-1;i++)
{
if(rotateArray[i]>rotateArray[i+1])
return rotateArray[i+1];
}
return rotateArray[0];
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int n=rotateArray.size( );
if(n==0)
return 0;
int index1=0;
int index2=n-1;
int indexMid=index1;
while(rotateArray[index1]>=rotateArray[index2])
{
if(index2-index1==1) //注意不要搞反了减数和被减数
{
indexMid=index2;
break;
}
indexMid=(index1+index2)/2;
//如果出现了下标index1、index2及indexMid三个值相等的情况,那么就只能是顺序查找了
if(rotateArray[indexMid]==rotateArray[index1]&&rotateArray[index1]==rotateArray[index2])
{
return MinInOrder(rotateArray,index1,index2);
}
if(rotateArray[indexMid]>=rotateArray[index1])
index1=indexMid;
else if(rotateArray[indexMid]<=rotateArray[index2])
index2=indexMid;
}
return rotateArray[indexMid];
}
{
int Min=rotateArray[index1];
for(int i=index1+1;i<=index2;i++)
{ if(Min>rotateArray[i])
Min=rotateArray[i];
}
return Min;
}
};
剑指offer面试题[8]-旋转数组的最小数字相关推荐
- 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)
1. 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] ...
- 剑指offer面试题11. 旋转数组的最小数字(二分查找)
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的 ...
- 剑指offer(12)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...
- 剑指offe面试题8 旋转数组的最小数字 (java实现)
解题思路: 针对旋转数组的特点,即旋转后,数组的前半部分是有序的,后半部分是有序的. 1.先考虑一般情况:可以参考二分查找的思想,在数组中设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置. ...
- j剑指offer面试题[33]-把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 可以 ...
- 剑指Offer - 面试题45. 把数组排成最小的数(字符串排序)
1. 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102"示例 2: 输入: [ ...
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路1: ...
- 【剑指offer-Java版】08旋转数组的最小数字
旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况 几个特别的测试用例需要注意下: 数组中含有多个相同的数字 最小数字就是第一个 public class _Q08 {publi ...
- 剑指offer——面试题51:数组中重复的数字
剑指offer--面试题51:数组中重复的数字 Solution1: 20180910更新.利用数组做一次hash映射,时间复杂度为O(n)O(n)O(n),空间复杂度O(n)O(n)O(n). cl ...
最新文章
- pandas使用split函数将dataframe中的特定列表字段(list column)裂变为多个数据列并拼接到原dataframe中
- C/C++中未定义行为
- c++连接mongodb出错
- 项目: 互动粒子仿真
- boost::enable_shared_from_this相关的测试程序
- 方差分析数据.rar
- Java字符串String相关2
- python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法
- IOS9+基础之警报框弹出和操作表弹出
- jeesite使用心得(二)
- OpenStack Glance简介
- Java web servers 间是如何实现 session 同步的
- TensorFlow推出命令式、可定义的运行接口Eager Execution
- linux查看服务命令是什么,linux系统查看所有服务的命令
- SBC在企业IP通信系统中的应用
- 一些Winodws mobile相关资料的整理
- JavaScript树形下拉框
- 多云管理平台解决方案
- Windows系统解决谷歌翻译不能用的问题
- 外媒如何看鸿蒙系统实测,鸿蒙系统是否真的很难成功,为何外媒总是在不断的“贬低”它?...