#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
int get_min(vector<int> & arr){
unsigned long length = arr.size();
int min = arr[0];
for (int i = 1; i< length ;i++)
{
if(arr[i] < min)
min = arr[i];
}
return min;
}
int binary_min(vector<int> & arr){
unsigned long begin = 0;
int result = -99999;
unsigned long middle;
unsigned long end = arr.size() - 1;
if (arr.size() == 1){
return -1;
}
while(begin<end)
{
if(begin + 1 == end)
{
result = arr[end];
return result;
}
middle = (begin + end) / 2;
if(arr[middle]==arr[begin] && arr[middle] == arr[end])
{
return get_min(arr);
}
if(arr[middle] >= arr[begin]){
begin = middle;
}
else{
end = middle;
}
}
return result;
}
int main(){
vector<int> node_vec({2,3,4,5,1,2});
cout<<binary_min(node_vec);
}
求旋转数组中最小元素问题
最新推荐文章于 2022-04-03 12:27:43 发布