在排序的数组或者部分排序的数组中查找一个数字或者统计某个数字出现的次数,可以尝试用二分查找
题目:
答案:
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int size = rotateArray.size();
if(size == 0)
return 0;
int i = 0;
bool flag = false;
for(i=0; i< size-1; i++)
{
if(rotateArray[i] > rotateArray[i+1])
{
flag = true;
break;
}
}
if(flag)
return rotateArray[i+1];
else
return rotateArray[0];
}
};
思路:
二分查找
1.将两个指针分别指向数组的第一个元素和最后一个元素,
2.找到数组的中间元素,该中间元素是前边递增的最大值,他的下一个位置即为最小值所在的位置。