高山 发表于 2022-9-18 20:30:05

C++程序:删除重复的数!【回复可见】

本帖最后由 高山 于 2022-9-18 20:49 编辑

原创声明:本帖为原创帖,欢迎大家转载
介绍:本帖将把一个数组里所有的重复数字全部删掉,仅保留最左边一个
输入说明:第一行为数组个数,第二行为数组内容
输出说明:结果
示例输入:
6
1 5 5 1 6 1示例输出:
3
5 6 1代码:
**** Hidden Message *****
源代码彩色版:
**** Hidden Message *****
演示视频:戳此查看
专辑推荐:
推荐的帖子:收录鱼C较好的帖子( 订阅传送门 )
每周一练系列:每周一练推送( 订阅传送门 )

人造人 发表于 2022-9-18 20:48:31

柿子饼同学 发表于 2022-9-18 20:33
要不... 再介绍一下 unique函数?

直接给他上代码
不过和他的示例输出不一样,因为unique要求数据是有序的

#include <iostream>
#include <vector>
#include <algorithm>

using std::cin, std::cout, std::endl;
using std::vector;
using std::unique, std::sort;
using std::ostream;

ostream &operator<<(ostream &os, const vector<size_t> &v) {
    for(const auto &i: v) os << i << " ";
    return os;
}

int main(void) {
    size_t n; cin >> n;
    vector<size_t> v;
    for(size_t i = 0; i < n; ++i) {
      size_t temp; cin >> temp;
      v.push_back(temp);
    }
    sort(v.begin(), v.end());
    v.erase(unique(v.begin(), v.end()), v.end());
    cout << v << endl;
    return 0;
}

不二如是 发表于 2022-9-18 21:03:27

{:10_256:}{:10_256:}{:10_256:}希望坚持下去,很棒哦

高山 发表于 2022-9-18 20:31:31

@zhangjinxuan @元豪 @不二如是 @小伤口 求支持

雪山之神 发表于 2022-9-18 20:32:19

支持

高山 发表于 2022-9-18 20:32:47

这么冷清?

柿子饼同学 发表于 2022-9-18 20:33:16

要不... 再介绍一下 unique函数?{:10_254:}

元豪 发表于 2022-9-18 20:33:37

高山 发表于 2022-9-18 20:31
@zhangjinxuan @元豪 @不二如是 @小伤口 求支持

支持!!{:5_108:}

高山 发表于 2022-9-18 20:34:46

柿子饼同学 发表于 2022-9-18 20:33
要不... 再介绍一下 unique函数?

hveagle 发表于 2022-9-18 20:35:00

呱一下

柿子饼同学 发表于 2022-9-18 21:02:54

人造人 发表于 2022-9-18 20:48
直接给他上代码
不过和他的示例输出不一样,因为unique要求数据是有序的

好强

zhangjinxuan 发表于 2022-9-18 21:04:32

看看

zhangjinxuan 发表于 2022-9-18 21:05:36

O(n^2)很逊耶

zhangjinxuan 发表于 2022-9-18 21:06:36

明天写个O(N)的

高山 发表于 2022-9-19 18:35:03

不二如是 发表于 2022-9-18 21:03
希望坚持下去,很棒哦

感谢不二如是!!!

高山 发表于 2022-9-19 18:37:01

不二如是 发表于 2022-9-18 21:03
希望坚持下去,很棒哦

一定的!!!

zhangjinxuan 发表于 2022-9-19 18:49:44

#include <bits/stdc++.h>

#define MAX 100000

using namespace std;

unordered_map<int, bool> number;
int n, cnt = 0, res, x;

int main() {
        scanf("%d", &n);
        for (int i = 1; i <= n; ++i) {
                scanf("%d", &x);
                if (!number) {
                        res[++cnt] = x;
                        number = 1;
                }
        }
        printf("%d\n", cnt);
        for (int i = 1; i <= cnt; ++i)
                printf("%d ", res);
}

运用了unordered_map来查看是否重复,但最后输出有些不一样

高山 发表于 2022-9-19 18:50:47

zhangjinxuan 发表于 2022-9-19 18:49
运用了unordered_map来查看是否重复,但最后输出有些不一样

eng

zhangjinxuan 发表于 2022-9-19 18:51:28

高山 发表于 2022-9-19 18:50
eng

eng

quark 发表于 2022-9-19 20:26:37

来看看。。。
页: [1] 2
查看完整版本: C++程序:删除重复的数!【回复可见】