题目描述[原题链接][https://www.acwing.com/problem/content/20/]
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个升序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
数组可能包含重复项。
注意:数组内所含元素非负,若数组大小为0,请返回-1。
样例
| 1 | 输入:nums=[2,2,2,0,1] | 
算法描述
- 特殊情况特殊处理,长度为0、旋转的元素为0个,长度为0直接返回-1,没有旋转返回nums[0]
- 去掉后面因为旋转可能与nums[0]相等的值,整个数组可以看作递增,可以二分思想解题- 在满足newNums[0]>newNums[mid]条件下,r=mid
- 否则l=mid+1
 
- 在满足
- 返回结果newNums[r]
C++代码
| 1 | class Solution { | 
Java代码
| 1 | class Solution { |