C++ 算法题:去除重复数字并排序

问题描述

给你 N 个数 (n <= 100),每个数都在 (0~1000) 之间,其中有很多重复的数字,请将重复的数字只保留一个,并将剩下的数由小到大排序并输出。

输入描述

输入有 2 行,

第 1 行为 1 个正整数,表示数的个数: N

第 2 行有 N 个用空格隔开的整数。

输出描述

第 1 行为 1 个正整数 M,表示不相同数的个数。

接下来的 M 行,每行一个整数,表示从小到大排好序的不相同的数。

用例输入 1

1020 40 32 67 40 20 89 300 400 15

用例输出 1

8152032406789300400

代码实现c++#include #include #include using namespace std;

int main() { int N; cin >> N; vector nums(N); for (int i = 0; i < N; i++) { cin >> nums[i]; } sort(nums.begin(), nums.end()); // 将数字排序 // 去除重复数字 vector uniqueNums; uniqueNums.push_back(nums[0]); for (int i = 1; i < N; i++) { if (nums[i] != nums[i-1]) { uniqueNums.push_back(nums[i]); } } // 输出结果 int M = uniqueNums.size(); cout << M << endl; for (int i = 0; i < M; i++) { cout << uniqueNums[i] << endl; } return 0;}

代码解析

  1. 使用 vector 容器存储输入的数字。2. 使用 sort 函数对 vector 进行排序。3. 遍历排序后的 vector,将第一个数字放入 uniqueNums 容器,并比较当前数字和前一个数字是否相同,若不同则将当前数字加入 uniqueNums 容器。4. 输出 uniqueNums 容器的大小,以及每个数字。

注意

  • 输入的数字个数 N 必须小于等于 100。* 每个数字必须在 0 到 1000 之间。
C++ 算法题:去除重复数字并排序

原文地址: https://www.cveoy.top/t/topic/qnJz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录