牛客题解 | 旋转数组中的最小元素
题目
题解
题目难度:简单
知识点:排序、查找
解题思路:这道题看起来就是找最小值,如果从头到尾进行比较是一种思路,缺点时总体的计算次数较多;进一步思考由于数是有一定大小规则进行排序的,所以可以使用二分法进行计算。
方法一(简单粗暴一个一个比较)
这道题就是输出较小数据,直接一个一个比较大小,然后输出符合要求的数据即可。
#include<bits stdc++.h>
using namespace std;
int main()
{
int temp;
cin>>temp;
int num;
while(cin>>num)
{
if(temp>num)
temp=num;
}
cout<<temp<<endl; } ``` ## 方法二 使用二分法进行查找 注意:使用二分法时,要考虑数据可能存在的前后重复性;假设原始数据为“567811111”,这时需要进行特别的二分处理。 #include<bits stdc++.h>
using namespace std;
int main(){
vector<int>array;
int n;
while(cin>>n)
array.push_back(n);
int l=0;
int r=array.size()-1;
while(l<r) { int mid="(l+r)/2;" if(array[mid]>array[r])
l=mid+1;
else if(array[mid]</r)></int></temp<<endl;></bits>

浙公网安备 33010602011771号