旋转数组的最小数字
来源:互联网 发布:mac 版梦幻西游有么 编辑:程序博客网 时间:2024/06/16 10:13
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输
出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
可以利用二分法查找,当start<=mid的时候,则最小值应当在mid和end之间,否则应该在start和mid之间。
另外,如果start==mid==end,则无法判断最小值在哪个区间,就只有顺序查找了。
public int minNumberInRotateArray(int [] array) { if(array.length<=0){return 0;}else if(array[0]<array[array.length-1]){return array[0];}return divide(array,0,array.length-1); } private int divide(int[] array,int start,int end){if(end-start==1){return array[end];}else{int mid=(start+end)/2;if(array[start]==array[end]&&array[start]==array[mid]){//无法确定最小值在哪个区间,只能顺序查找return minInorder(array);}if(array[start]<=array[mid]){return divide(array,mid,end);}else{return divide(array,start,mid);}}}private int minInorder(int [] array){int min=array[0];for(int i=0;i<array.length;i++){if(min>array[i]){min=array[i];}}return min;}
0 0
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 装装环境玩玩
- android中常见的内存溢出和解决办法
- Android 支付宝集成及解决支付宝报null指针问题
- 【VBA研究】如何使用VBA项目的数字证书
- Install PEAR and PECL on Mac OS X
- 旋转数组的最小数字
- startActivityForResult出错
- 一波面经。。。
- opencv入门01(visual studio2010)--20151229
- 用Fragment制作的Tab页面产生的UI重叠问题
- 解析 CC2541 的 BLE 数据包为什么是 20 字节
- Objective-C对方法进行注释的方法
- 亮仔移植u-boot系列之-- S3c2440在最新版本U-boot-2015.10移植(支持SPL模式启动) -- 3
- ios学习笔记UITableViewCell重用时出现重影的解决方案