欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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().

相关标签: c++