• 面试题:旋转数组的最小数字


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

    方法1:最笨的一种, 遍历整个数组,找出其中最小的数。这样肯定拿不到offer

    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            if(array.length == 0)
                return 0;
            int min = 0;
            for(int i=1;i<array.length;i++){
                if (array[i]<array[min]){
                    min=i;
                }
            }
            return array[min];
        }
    }

    方法2:稍微优化  但是不知道最后一个return什么作用

    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;i++){
                if(array[i]>array[i+1]){
                    return array[i+1];
                }
            }
            return array[0];
        }
    }

    方法3:二分查找的变形

    import java.util.ArrayList;
    public class Solution {
        public static int minNumberInRotateArray(int[] array) {
            if (array.length == 0)
                return 0;
            int left = 0;
            int right = array.length - 1;
            int middle = -1;
            while (array[left]>=array[right]) {
                if(right-left==1){
                    middle = right;
                    break;
                }
                middle = left + (right - left) / 2;
                if (array[middle] >= array[left]) {
                    left = middle;
                }
                if (array[middle] <= array[right]) {
                    right = middle;
                }
            }
            return array[middle];
        }
    }
  • 相关阅读:
    表的外键创建:
    django内容回顾:
    编辑出版社:
    删除出版社:
    新增出版社:
    Windows XP SP3中远程桌面实现多用户登陆
    Hibernate基本概念 (4)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
    Hibernate基本概念 (3)
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9502888.html
Copyright © 2020-2023  润新知