题目
1.描述
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。
2.示例
输入: [3,4,5,1,2]
输出: 1
3.思路
使用二分查找的思想,首先对只有一个元素和旋转下标为0的情况进行考虑 , 然后用中间元素和第一个元素进行比较
- 中间元素大于第一个元素, 在右半部分找最小值
- 中间元素小于第一个元素, 在左半部分找最小值
- 结束条件, left<=right:
- 中间元素大于右侧相邻元素, 则右侧相邻元素为最小值
- 中间元素小于左侧相邻元素, 当前中间元素即为最小值
- 条件均不满足返回-1
4.代码
public int findMin(