题解
【基础】去除重复数字
1 条题解
-
0
解题思路
加入数字前先检查是否出现过,最后把不重复的数字排序输出。
参考代码
// 先读入题目给出的数据。 // 再按照题目要求进行计算。 // 最后按规定格式输出答案。 #include <iostream> using namespace std; int main() { int n, a[100], m = 0; cin >> n; // 读入数字,遇到没有出现过的数字才保存。 for (int i = 0; i < n; i++) { int x; cin >> x; bool ok = true; for (int j = 0; j < m; j++) if (a[j] == x) ok = false; if (ok) a[m++] = x; } // 对不重复的数字进行从小到大排序。 for (int i = 0; i < m; i++) for (int j = i + 1; j < m; j++) if (a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a[j] = t; } cout << m << endl; for (int i = 0; i < m; i++) cout << a[i] << endl; return 0; }复杂度分析
排序需要 O(n^2) 时间;其余循环按照实际遍历次数计算。代码使用固定大小数组,额外空间复杂度为 O(1) 或 O(n)。
- 1