https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/python
假设按照升序排序的数组在预先未知的某个点上进行了旋转。web
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。数组
请找出其中最小的元素。svg
你能够假设数组中不存在重复元素。学习
示例 1:ui
输入: [3,4,5,1,2]
输出: 1spa
示例 2:code
输入: [4,5,6,7,0,1,2]
输出: 0xml
经过这个题,才知道二分查找原来有这么多学问,更多的时间花在了学习大佬的总结,见leetcodecn题解1,2排序
int findMin(int* nums, int numsSize){ int low = 0, high = numsSize-1; while(low < high){ int mid = low + ((high - low)>>1); if(nums[mid] > nums[high]){ low = mid+1; }else{ // nums[high] > nums[mid], 不会出现等于, 由于low<high, 而mid向下取整, 必定小于high high = mid; } } return nums[low]; }