c++ STL//二分查找
程序员文章站
2024-03-17 19:12:40
...
人生第一篇博客和大家分享一下上周周赛的一道题目 二分查找
题目如下:
E - 二分查找(一)
蒜头君手上有个长度为 n的数组 A。由于数组实在太大了,所以蒜头君也不知道数组里面有什么数字,所以蒜头君会经常询问整数 x是否在数组 A 中。
输入格式
第一行输入两个整数 n和 m,分别表示数组的长度和查询的次数。接下来一行有 n个整数 。接下来 m 行,每行有 1个整数 x,表示蒜头君询问的整数。
输出格式
对于每次查询,如果可以找到,输出"YES",否则输出"NO"。
**解题思路 :**从题目就可以敏锐的注意到 二叉搜索树这个知识点又因为这是存数查找。所以我就用到了 STL库里的 set 。
代码如下:
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int>A;
int m,n,x,y;
cin>>m>>n;
for(int i=0;i<m;i++)
{
cin>>y;
A.insert(y);
}
for(int i=0;i<n;i++)
{
cin>>x;
if(A.find(x)!=A.end())
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
return 0;
}
这里要注意几点: 一个是set 的头文件 #include不能忘 另一个是函数A.find()的用法 如果查询的值在set集合里会返回这个值否则则返回 A.end().