class Solution { public: int minArray(vector<int>& numbers) { int left=0,right=numbers.size()-1; while(left<right) { int mid=left+(right-left)/2; if(numbers[mid]>numbers[right]) { left=mid+1; } else if(numbers[mid]<numbers[right]) { right=mid; } else { right--; } } return numbers[left]; } };
1、right=numbers.size()-1; 如果不减1,会越界
2、mid=left+(right-left)/2;防止数过大时越界
3、判断条件,如果没有重复元素。就不需要第三个判断条件,有就要
愿为天下目,萃聚六路华
浙公网安备 33010602011771号