8 旋转数组的最小数字

Posted __Meng

tags:

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

输入一个递增排序数组的一个旋转,输出旋转数组的最小元素
例如1,2,3,4,5的一个旋转可以为3,4,5,1,2
把一个数组的最开始若干个元素搬到数组的末尾,称之为数组的旋转

输出旋转数组的最小元素

 

C++:

 1 class Solution {
 2 public:
 3     int minInOrder(vector<int> rotateArray , int left , int right) {
 4         int res = rotateArray[left] ;
 5         for (int i = left ; i <= right ; i++){
 6             if (rotateArray[i] < res)
 7                 res = rotateArray[i] ;
 8         }
 9         return res ;
10     }
11     
12     int minNumberInRotateArray(vector<int> rotateArray) {
13         int len = rotateArray.size() ;
14         if (len <= 0)
15             return 0 ;
16         int left = 0 ;
17         int right = len - 1 ;
18         int mid = left ;
19         while(rotateArray[left] >= rotateArray[right]){
20             if (right-left == 1){
21                 mid = right ;
22                 break ;
23             }
24             mid = (left+right)>>1 ;
25             if (rotateArray[left] == rotateArray[mid] && rotateArray[mid] == rotateArray[right]){
26                 return minInOrder(rotateArray,left,right) ;
27             }
28             if (rotateArray[mid] >= rotateArray[left]){
29                 left = mid ;
30             }else if (rotateArray[mid] <= rotateArray[right]){
31                 right = mid ;
32             }
33         }
34         return rotateArray[mid] ;
35     }
36 };

 

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

[剑指offer]面试题8:旋转数组的最小数字

求旋转数组的最小数字算法的解析以及完整c语言代码实现

旋转数组的最小数字 - 剑指offer 面试题8

剑指Offer之旋转数组中的最小数字(题8)

旋转数组的最小数字

旋转数组的最小数字