码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer java -查找旋转数组的最小数字

时间:2017-07-28 00:20:05      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:min   最小值   ret   dex   class   一个   break   ber   array   

/**
* Created by wqc on 2017/7/18.
* 查找旋转数组的最小数字
* 把一个数组最开始的若干个元素搬到数组的末尾,称为数组的旋转
* 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素
* 如:3,4,5,1,2 为1,2,3,4,5的一个旋转,最小值为1
*/
public class Problem8_findMinNumber {
public Integer findMinNum(int[] array)
{
if(array == null)
{
return null;
}

int leftIndex = 0;
int rightIndex =array.length-1;
int mid = 0;
while(array[leftIndex]>=array[rightIndex])
{
if(rightIndex-leftIndex <= 1)
{
mid = rightIndex;
break;
}

mid = (leftIndex + rightIndex)/2;
if(array[leftIndex] == array[rightIndex] && array[leftIndex] == array[mid])
{
if(array[leftIndex + 1] != array[rightIndex - 1])
{
mid = array[leftIndex + 1] < array[rightIndex -1] ? (leftIndex + 1) : (rightIndex - 1);
break;
}else{
leftIndex++;
rightIndex--;
}
}else if(array[mid] >= array[leftIndex]){

leftIndex = mid;
}else if(array[mid] <= array[rightIndex]){

rightIndex = mid;
}
}
return array[mid];
}

}

剑指offer java -查找旋转数组的最小数字

标签:min   最小值   ret   dex   class   一个   break   ber   array   

原文地址:http://www.cnblogs.com/qingchun-com/p/7248012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!