算法剑指 Offer 11. 旋转数组的最小数字

Posted Rose J

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法剑指 Offer 11. 旋转数组的最小数字相关的知识,希望对你有一定的参考价值。

1.题目

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2][1,2,3,4,5] 的一次旋转,该数组的最小值为1。

示例 1:

输入:[3,4,5,1,2]
输出:1

示例 2:

输入:[2,2,2,0,1]
输出:0

2.思路

解题思路

  1. 冒泡排序暴力 x
  2. Arrays.sort() x
    1. 若是基本类型,需要转化为对应的对象类型(例如:int转化为integer)
    2. arrays.sort()可以排序基本对象类型,但是不可以排序基本数据类型
  3. 这里使用的是二分法来解决问题 √

3.答案

class Solution 
  public int minArray(int[] numbers) 
         int low = 0 ;
         int hight = numbers.length -1;
         while (low<hight)//注意low和hight的大小限制
             int pv=(low+hight)/2;
             if (numbers[pv]<numbers[hight])
                 hight=pv;
             else if (numbers[pv]>numbers[hight])
                 low=pv+1;
             else 
                 hight--;
             
             
         
        return numbers[low];
    

以上是关于算法剑指 Offer 11. 旋转数组的最小数字的主要内容,如果未能解决你的问题,请参考以下文章

算法剑指 Offer 11. 旋转数组的最小数字

#yyds干货盘点#剑指 Offer 11. 旋转数组的最小数字

剑指offer(C++)-JZ11:旋转数组的最小数字(算法-搜索算法)

剑指offer(C++)-JZ11:旋转数组的最小数字(算法-搜索算法)

剑指offer(C++)-JZ11:旋转数组的最小数字(算法-搜索算法)

剑指 Offer 11. 旋转数组的最小数字 的详细题解