class Solution { public: int findMin(vector<int>& nums) {//找到两个递增数组交界的位置的后一个元素 int low=0; int high=nums.size()-1; while(low<high){ int mid=(low+high)/2; if(nums[mid]<nums[high]){//说明后半部分是递增的,那么交界位置在前面,但是有可能包括mid high=mid; if(high-low==1) return min(nums[low],nums[high]); } else if(nums[mid]>nums[high]){//说明前半部分是递增的,那么交界位置在后面,但是有可能包括mid low=mid; if(high-low==1) return min(nums[low],nums[high]); } } return nums[high]; } };
注意:无论左旋转还是右旋转,效果是一样的
[leetcode] 153. Find Minimum in Rotated Sorted Array
原文:http://www.cnblogs.com/whutqueqiaoxian/p/5689964.html