我看理解题意将是我在刷题路上最大的障碍。
这题,非递减有序数组->旋转后的数组->找最小
原来觉得直接找最小但题目提示用二分
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if(rotateArray.empty())
return 0;
int left=0,right=rotateArray.size()-1;
while(left<right){
if(rotateArray[left]<rotateArray[right])
return rotateArray[left];
int mid=left+(right-left)/2;
if(rotateArray[left]<rotateArray[mid])
left=mid+1;
else if(rotateArray[mid]<rotateArray[right])
right=mid;
else
++left;
}
int a=rotateArray[left];
return a;
}
};
比如快排
int minNumberInRotateArray(vector<int> rotateArray){
int len = rotateArray.size();
if (len == 0)
return 0;
int min = rotateArray[0];
for (int i = 1; i<len; i++)
if (rotateArray[i]<min)
min = rotateArray[i];
return min;
}