酷代码 AI
菜单
服务商

C++序列去重算法实现与解析

```cpp #include <iostream> #include <vector> #include <unordered_set> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i) { cin >> nums[i]; } unordered_set<int> seen; vector<int> result; for (int num : nums) { if (seen.find(num) == seen.end()) { seen.insert(num); result.push_back(num); } } for (size_t i = 0; i < result.size(); ++i) { if (i > 0) cout << " "; cout << result[i]; } cout << endl; return 0; } ``` 🔍 **代码解析** - 使用 `unordered_set` 记录已出现的数字,实现 O(1) 时间复杂度的查找。 - 遍历输入序列,若数字未出现过,则加入结果向量并记录。 - 按顺序输出结果向量中的数字,保持原始顺序。 ⚙️ **复杂度分析** - 时间复杂度:O(n),遍历一次输入序列。 - 空间复杂度:O(n),存储结果和哈希集合。 💡 **注意事项** - 输入规模 n ≤ 20000,整数范围 1~5000,哈希集合足够高效。 - 输出时注意空格格式,最后一个数字后无空格。 - 使用 `vector` 存储结果,确保输出顺序与输入一致。 ######[AI问答 | 333点数解答 | 2026-03-23 12:41:36]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]