【剑指offer】六,旋转数组中的最小数字
2015-08-26 12:03
316 查看
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。分析:数组旋转后会变为一个局部有序的数组,分为两部分,都是递增的。查找最小元素,我们首先想到的时冒泡排序一遍,或者一趟选择排序。或者直接找出a[i]<a[i-1]的点即为要查找的点。也可利用折半查找,判断最小值所在的一侧。
import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int[] array) { if(array==null||array.length==0){ return 0 ; } if(array.length==1||array[0]<array[array.length-1]){ return array[0] ; } if(array.length==2){ return Math.min(array[0], array[1]) ; } int min = array[0] ; for(int i = 1 ; i <array.length ;i++ ){ if(array[i]<min){ min = array[i] ; } } return min ; } }
第二种方法
import java.util.ArrayList; public class Solution { public int minNumberInRotateArray(int [] array) { if (array.length == 0) return 0; ///not a[0] for (int i = 1; i < array.length; ++i) { if (array[i] < array[i - 1]) return array[i]; } return array[0]; } }
相关文章推荐
- asp.net mvc中用angularJs写的增删改查的demo。初学者,求指点。。
- HTML高级选项卡(1)————表标签
- Angular directive实践($compile , ngModel ...)
- bootstrap 起步
- django css样式,图片路径问题解决方案
- 自定义 CheckBox样式
- js重要函数
- 在网页中加入JavaScript
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
- JavaScript语法
- JavaScript调试
- JavaScript事件处理
- jsoncpp的api简要说明
- JavaScript概述
- JavaScript的对话框
- jquery json string 转换 合并
- JSP中文乱码问题
- HDU1203I Need A Offer
- Swap Nodes in Pairs
- div+css实现仿淘宝的产品分类菜单效果代码