剑指offer-旋转数组的最小数字
2016-01-09 00:51
316 查看
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。注意:选要考虑数组多个相同2,2,1,2,2:
import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { if(array == null || array.length ==0){ return 0; } int index1 = 0; int index2 = array.length -1; int indexMid = index1; while(array[index1] >=array[index2]){ if(index2 -index1 == 1){ return array[index2]; } indexMid = index1 +(index2 -index1)/2; if(array[indexMid] == array[index1] || array[index2] == array[indexMid]){ return midOrder(array,index1,index2); } if(array[indexMid] >= array[index1]){ index1 = indexMid; } else if(array[indexMid] <= array[index2]){ index2 = indexMid; } } return array[indexMid]; } private int midOrder(int[] array, int index1, int index2) { int result = array[index1]; int i = index1 +1; for(;i<= index2;i++){ if(result >array[i]){ result =array[i]; } } return result; } }
相关文章推荐
- socket-详细分析No buffer space available(转)
- jQuery中serializeArray方法的使用及对象与字符串的转换
- X5 内核浏览器对json格式支持的一个小区别
- Iphone H5上传照片被旋转
- Iphone H5上传照片被旋转
- bootstrap-treeview自定义双击事件实现方法
- JavaScript电子时钟倒计时
- JS中生成随机数的用法及相关函数
- javascript类型系统 Array对象学习笔记
- javascript返回顶部的按钮实现方法
- jQuery页面刷新(局部、全部)问题分析
- javascript跑马灯抽奖实例讲解
- 小心!AngularJS结合RequireJS做文件合并压缩的那些坑
- 实例讲解js验证表单项是否为空的方法
- jquery调整表格行tr上下顺序实例讲解
- js父页面中使用子页面的方法
- 详解javascript事件冒泡
- 实例讲解javascript注册事件处理函数
- 10个最佳的ReactJS实例教程[译文]
- Sublime Text 运行HTML