还是贴上自己的蹩脚代码吧!!
1 class Solution { 2 public: 3 int findMin(vector<int>& nums) { 4 if(nums.empty()) 5 return -1; 6 int begin=0,end=nums.size()-1; 7 while(begin<end) 8 { 9 int mid=(begin+end)/2; 10 if(mid==begin) 11 return nums[begin]<nums[end]?nums[begin]:nums[end]; 12 if(nums[mid]>nums[begin]) 13 { 14 if(nums[end]<=nums[begin]) 15 begin=mid+1; 16 else 17 return nums[begin]; 18 } 19 else if(nums[mid]<nums[begin]) 20 { 21 end=mid;//这个地方若是改为end=mid-1,是无法得到正确结果的!! 22 } 23 else 24 { 25 begin++; 26 } 27 } 28 return nums[begin]; 29 } 30 };
Find Minimum in Rotated Sorted Array II leetcode
原文:http://www.cnblogs.com/chess/p/5185892.html