和153的情况类似,主要是有相等重复的情况,需要将right-1
class Solution {
public:
int findMin(vector<int>& nums) {
if(nums.size() == 0 ) return 0;
int left(0), right(nums.size()-1), mid((right+left)/2);
while(left < right){
//cout << "left is:" << left << "right is:" << right << "mid is:" << mid;
if(nums[mid] > nums[right]) left = mid + 1;
else if(nums[mid] < nums[right]) right = mid;
else right = right - 1;
mid = (right + left) /2;
}
return nums[mid];
}
};
本文介绍了一种在旋转排序数组中寻找最小值的高效算法。通过二分查找的方法,即使在数组元素存在重复的情况下,也能准确快速地定位到最小值。文章详细解析了算法的实现过程,并提供了C++代码示例。
1194

被折叠的 条评论
为什么被折叠?



