22.旋转数组最小数字
一种错误
class Solution {
public:
int findMin(vector<int>& nums) {
if(nums.empty()) return -1;
int x = nums[0];
int l=0,r = nums.size()-1;
int mi;
for(int i=0;i<nums.size();i++){
if(nums[i]==x) l++;
else break;
}
while(l<r){
mi = l+r>>1;
if(nums[mi] <=x ){ //不能直接<= 不然与前面的冲突,要么删前面的重复值,要么是后面的,使得前后条件不一致即可,即满足不同的条件
r = mi;
}else{
l = mi+1;
}
}
return nums[r];
}
};
稍加修改也能过
//特判: 是递增数组
if(nums[nums.size()-1] >nums[0]) return nums[0];