题解
题目难度:简单
知识点:排序、查找
解题思路:这道题看起来就是找最小值,如果从头到尾进行比较是一种思路,缺点时总体的计算次数较多;进一步思考由于数是有一定大小规则进行排序的,所以可以使用二分法进行计算。
方法一(简单粗暴一个一个比较)
这道题就是输出较小数据,直接一个一个比较大小,然后输出符合要求的数据即可。
#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]<array[r])
r=mid;
//需要注意的是必须考虑数据重复的可能性
else r=r-1;
}
cout<<array[l]<<endl;
return 0;
}
京公网安备 11010502036488号