为了账号安全,请及时绑定邮箱和手机立即绑定

剑指offer(六)旋转数组的最小数据

标签:
Java

写在前面:

为了增长一下自己的数据结构能力,也为了面试准备,准备将剑指Offer做一下,并与各位分享,希望各位可以对代码以及思路提提建议,欢迎志同道合者,谢谢。

题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

思路

这个题目有多种结题思路,
一,可以直接遍历循环后的数组,然后得到最小的数据
二,这个是旋转数组,把数组前面的一段数据放在后面去,比如原数组为 1,2,3,4,5 旋转之后为 3,4,5,1,2  然后我们从最后一位和第一位比较,都是比第一位小的,当比到5的时候,就会比前面的大,我们就可以取到最小的值,这样比的次数少一点,还有一种情况就是原数组为1,2,3,4,5旋转之后还是1,2,3,4,5  那么比到最后也不行,那么我们直接返回数组第一位

本文实现二种方法

package com.itzmn.offer;/**
 * @Auther: 张梦楠
 * @Date: 2018/7/28 11:11
 * 简书:https://www.jianshu.com/u/d611be10d1a6
 * 码云:https://gitee.com/zhangqiye
 * @Description:
 */public class Offer6 {


    public static void main(String[] args) {        int[] array = {1,2,3,4};        int i = new Offer6().minNumberInRotateArray(array);
        System.out.println(i);

    }   /* public int minNumberInRotateArray(int [] array) {

        if (array.length == 0){
            return 0;
        }
        int k=0;
        for (int i=0;i<array.length;i++){
            if (array[i]<array[k]){
                k=i;
            }
        }
        return array[k];
    }
*/
   public int minNumberInRotateArray(int [] array) {       if (array.length == 0 ){           return 0;
       }else {           for (int i=0;i<array.length-1;i++){               if (array[0]>array[i]){                   return array[i];
               }
           }           return array[0];
       }
   }

}



作者:z七夜
链接:https://www.jianshu.com/p/3d0f3023dae1


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消