zoukankan      html  css  js  c++  java
  • 剑指Offer(Java版)第十题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。

    /*
    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
    输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
    例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
    */
    public class Class10 {
    //因为是一个递增数列的旋转,判断出高低的一个变化位置非常重要
    //可以使用二分法来实现这一过程
    //如果不考虑其他使用简单的排序方法来直接获得最小值也不错。
    public int sortAndFindMin(int[] a){
    int index_low = 0;
    int index_high = a.length - 1;
    if(a.length < 0){
    throw new RuntimeException("数组错误!");
    }
    if(a.length == 0 || a == null){
    throw new RuntimeException("数组为空!");
    }
    if(a.length == 1){
    return a[index_low];
    }
    while(index_low < index_high){
    int index_mid = index_low + (index_high - index_low)/2;
    if(a[index_mid] < a[index_high]){
    index_high = index_mid;
    }
    if(a[index_mid] > a[index_high]){
    index_low = index_mid + 1;
    }
    if(a[index_mid] == a[index_high]){
    index_high--;
    }
    }
    return a[index_low];
    }

    public void test(){
    int[] a = {3, 4, 5, 1, 2};
    System.out.println(sortAndFindMin(a));
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Class10 c = new Class10();
    c.test();
    }
    }

  • 相关阅读:
    Python学习笔记(十四)—hashlib模块
    Python学习笔记(十三)—函数常用模块
    Python学习笔记(十二)—函数
    PHP-代码执行
    CVE-2020-5902 F5 BIG-IP RCE复现
    sqli-Mysql写shell/读文件
    Mysql服务端反向读取客户端的任意文件
    PHP-AJAX
    PHP-XML
    googlehacking
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12421515.html
Copyright © 2011-2022 走看看