选对结构,问题就简单了

10 分钟

很多题目难,其实难点不在算法,而在"这些数据该用什么装"。装对了容器,代码自然就短了、快了。比如要反复问"这个数出现过没有",用数组得从头翻一遍,慢;换成集合(set),一句话就查完。

#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
    unordered_set<int> seen;
    seen.insert(3); seen.insert(7);
    cout << seen.count(7) << " "; // 出现过,输出 1
    cout << seen.count(5) << "\n"; // 没出现,输出 0
}

提醒:count 在 set 里只会返回 0 或 1(表示有没有)。别把它当成"出现了几次",那是另一回事,要统计次数得用 map

小纸条

要频繁查"某个数出现过没有",用什么?

登录 后可看答案