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

[剑指offer] 旋转数组的最小数字

时间:2016-04-29 18:02:16      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

输入描述

一个非递减序列的一个旋转数组

输出描述

输出旋转数组的最小元素

题目分析

  原数组最小的值必然是第一个,旋转后数组是两个非递减数组的拼接,只要找到第二个非递减数组的第一个元素就是最小值。
  遍历旋转数组,只要有array[i+1]小于array[i],那么array[i+1]必是最小值(这里不能取等,比如[2,2,1,2,2]取等就返回2了,至于特殊情况[1,1,1,1,1]遍历完没有结果,在最后return array[0]就可以了)。

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        if(array.length==0){
            return 0;
        }

        for(int i =0;i<array.length-2;i++){
            if(array[i+1] < array[i]){
               return array[i+1];
            }
        }
        return array[0];
    }
}

   
  注意:
  题目要求数组 [] 要求返回 0,其实我觉得该返回 -1;
  数组不要越界,也不要直接求一个一维数组的最小值(就是先设第一个最小,遍历数组比它小的就赋值为最小,最后返回),你觉得别人给你说半天旋转都是空话吗?

[剑指offer] 旋转数组的最小数字

标签:

原文地址:http://blog.csdn.net/amazing7/article/details/51242134

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