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

     这道牛客上面的题就是想要找一个数组中的最小值。由题意我们可以知道,这是一个旋转数组。所以我们就需要了解什么是旋转数组。其实就是将一个好的数组,进行了多次的循环右移的操作。所以我们从题意中得到。这个数组是一个非减序的数组。那么我们就会更加清楚这个数组是一个有序的数组。当然我们想要找一个数的时候。我们首先是想到的是进行半分查找。所以在这里我给大家提供一个Cplus中的代码的方法。这个是一个比较好的半分查找方法。

    C++做题方法

    class Solution {
    public:
    int minNumberInRotateArray(vector<int> rotateArray) {
    if(rotateArray.size()==0)return 0;
    int low = 0;
    int high = rotateArray.size()-1;
    while(low<high){
    int mid = (low+high)/2;
    if(rotateArray[mid]>rotateArray[high])
    low = mid +1;
    else if(rotateArray[mid]==rotateArray[high]){
    high = high - 1;
    }
    else
    high = mid;
    }
    return rotateArray[low];
    }
    };

    然后我再给大家提供一种用java中的蛮力法进行数组的遍历,得到的数组的方法。这道题的做法主要的还是思想。这道题主要是为了我们找到最小值。而我们通过找规律,可以大体的知道这个最小的数组的位置是在什么地方。下面不多说,直接上代码。

    java蛮力做题方法

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

    }
    }

    然后为了感谢广大网友,下面我再用java中的中分法进行做一下。

    import java.util.ArrayList;
    public class Solution {
    public int minNumberInRotateArray(int [] array) {
    int high=array.length;
    if (high==0)return 0;
    int res = array[0];
    int low =0;
    high=high-1;
    int mid;
    while(low < high){
    mid=(low+high)/2;
    if (array[mid]<=array[high]) high=high-1;
    else low=mid+1;
    }
    return array[low];
    }
    }

    在这里我想要说两句了,就是如果你要是实际的操作你就会知道。这里面C++代码的无论是耗时还是空间占用都是比java要小的,而且有的程序是小了很多。C++这个代码很强大的呀。

  • 相关阅读:
    DVWA SQL注入源代码审计
    sqlmap
    sql注入原理+mysql相关知识点
    SQL报错常见的注入姿势
    故障处理流程和规范
    Kafka源码工程examples项目配置log4j
    如何快速安装kafka-manager
    PHP8 新特征
    PHP-面试总结——高并发篇
    Docker 搭建多容器组合服务 (nginx + PHP)
  • 原文地址:https://www.cnblogs.com/littleswan/p/11311892.html
Copyright © 2011-2022 走看看