酷代码 AI
菜单
服务商

用#include <iostream> using namespace std; int a[20001]; int main(){ int n,b=1; cin>>n; for (int i=1;i<=n;i++){ b=0; cin>>a[i]; for (int j=1;j<i;j++){ if (a[j]==a[i]){ b+=1; } } if (b==0){ cout<<a[i]<<" "; } } return 0; } 更简单

你提供的代码功能是读取 `n` 个整数,然后输出其中第一次出现的整数,去除重复的元素。可以使用 `unordered_set` 来简化代码,`unordered_set` 可以快速判断一个元素是否已经存在,从而避免嵌套循环。 以下是简化后的代码: ```cpp #include <iostream> #include <unordered_set> using namespace std; int main() { int n; cin >> n; unordered_set<int> seen; int num; for (int i = 0; i < n; i++) { cin >> num; // 检查元素是否已经在集合中 if (seen.find(num) == seen.end()) { cout << num << " "; // 将元素插入集合中 seen.insert(num); } } return 0; } ``` 代码解释 1. 包含必要的头文件:`#include <iostream>` 用于输入输出,`#include <unordered_set>` 用于使用 `unordered_set` 数据结构。 2. 定义 `unordered_set`:`unordered_set<int> seen;` 定义一个存储整数的 `unordered_set`,用于记录已经出现过的整数。 3. 读取输入:使用 `for` 循环读取 `n` 个整数。 4. 检查元素是否已经出现:`seen.find(num) == seen.end()` 检查元素 `num` 是否已经在 `seen` 集合中。如果不在集合中,则输出该元素,并将其插入集合中。 5. 返回结果:程序结束时返回 0。 复杂度分析 - 时间复杂度:$O(n)$,其中 $n$ 是输入的整数个数。每个元素的插入和查找操作的平均时间复杂度都是 $O(1)$。 - 空间复杂度:$O(k)$,其中 $k$ 是不同整数的个数。在最坏情况下,所有元素都不同,空间复杂度为 $O(n)$。 [2026-02-07 21:06:22 | AI问答 | 463点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多