旋转数组的最小数字
2016-04-17 12:59
211 查看
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路:
数组原本是有序的,旋转后会出现一个分界,找到分界就能找到最小值,刚开始想到二分查找,但是数组中可能有重复的值,如{0,1,1,1}旋转后 {1.1.0.1},就无法用二分 查找确定边界,如果无重复则是可行的。所以通过顺序遍历比较相邻两个数值,若前一个数大于后一个数,则出现了分界,可确认最小值,若循环结束都没找到分界,则第一个数为最小值。
代码:
import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { if(array.length==0||array==null) return 0; int i; for(i=1;i<array.length;i++){ if(array[i-1]>array[i]) break; } if(i==array.length) return array[0]; return array[i]; } }
相关文章推荐
- iOS本地化翻译xliff文件
- MyEclipse安装后需要进行的配置
- HDU - Segment
- Java中普通代码块,构造代码块,静态代码块区别
- 虚函数表与虚表钩子
- SMBIOS
- HDU 5667 Sequence
- cocoNode节点函数注释
- 二叉树的深度
- android中关于listView复用时出现错乱问题
- 阻塞 非阻塞 同步 异步 线程 进程 任务
- 凸优化和非凸优化
- 防止shell脚本长时间执行导致ssh超时
- 第七周学习进度
- super,superClass,class
- PHP学习(十八)--常见的关键字和魔术方法
- Label设置行间距
- myeclipse快捷键ctrl+alt+向下箭头与屏幕翻转快捷键冲突解决方案
- OllyDbg 常用快捷热键
- json转化为字符串