【发布时间】:2020-10-11 13:44:13
【问题描述】:
给定一个长度为 N 的数组 A。对于任何给定的整数 X,您需要找到一个严格大于 X 的整数 Z,使得 Z 不存在于数组 A 中。您需要最小化 Z 的值。
输入:
第一行:两个空格分隔的整数 N 和 Q 表示数组 A 和 分别查询的数量
第二行:N个空格分隔的整数,表示数组元素
接下来的 Q 行:每行包含一个整数 X
输出: 打印 Q 行,每行表示对应查询的答案。
示例输入:
5 2
2 7 5 9 15
3
9
样本输出:
4
10
我的解决方案-
int main()
{
ll n,q;
cin>>n>>q;
map<ll,bool>mp;
for(ll i=0;i<n;i++)
{
ll x;
cin>>x;
mp[x]=true;
}
while(q--)
{
ll x;
cin>>x;
x++;
while(mp[x])
{
x++;
}
cout<<x<<endl;
}
}
【问题讨论】:
-
第 0 步是,在启用编译器优化的情况下构建代码。
-
你假设/希望所有输入都是有效的,最好检查一下它们是否正确
-
提示:
lower_bound是检查值的良好起点 -
std::map<T, bool>只有true值可能会被std::set<T>替换。
标签: c++ sorting data-structures implementation array-algorithms