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

【剑指offer】六,旋转数组中的最小数字

时间:2015-08-26 13:44:15      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
 
分析:数组旋转后会变为一个局部有序的数组,分为两部分,都是递增的。查找最小元素,我们首先想到的时冒泡排序一遍,或者一趟选择排序。或者直接找出a[i]<a[i-1]的点即为要查找的点。也可利用折半查找,判断最小值所在的一侧。
 
 1 import java.util.ArrayList;
 2 public class Solution {
 3     public int minNumberInRotateArray(int[] array) {
 4         if(array==null||array.length==0){
 5             return 0 ;
 6         }
 7         if(array.length==1||array[0]<array[array.length-1]){
 8             return array[0] ;
 9         }
10         if(array.length==2){
11             return Math.min(array[0], array[1]) ;
12         }
13         int min = array[0] ;
14         for(int i = 1 ; i <array.length ;i++  ){
15             if(array[i]<min){
16                 min = array[i] ;
17             }
18         }
19         return min ;
20     }
21 }

 第二种方法

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];
    }
}

 

【剑指offer】六,旋转数组中的最小数字

标签:

原文地址:http://www.cnblogs.com/huntertoung/p/4759986.html

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