您的位置:首页 > 其它

【网易2017春招】消除重复元素 解题报告

2017-03-30 11:11 357 查看

【网易2017春招】消除重复元素 解题报告

标签(空格分隔): 牛客网

题目地址:【网易2017春招】消除重复元素

题目描述:

小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。

  

输入:

输入包括两行:

第一行为序列长度n(1 ≤ n ≤ 50)

第二行为n个数sequence[i](1 ≤ sequence[i] ≤ 1000),以空格分隔

输出:

输出消除重复元素之后的序列,以空格分隔,行末无空格

样例输入:

9
100 100 100 99 99 99 100 100 100


样例输出:

99 100


Ways

题目要求保留每个元素最后出现的位置,因此,采用倒序的遍历去重。从最后一个元素开始向前遍历,如果两者相同就把这个元素标记为0。最后正序遍历输出即可。

#include <stdio.h>
using namespace std;

int main() {
int n;
while (scanf("%d", &n) != EOF) {
int seq
;
for (int i = 1; i <= n; i++) {
scanf("%d", &seq[i - 1]);
}
int temp = 0;
for (int i = n - 1; i >= 0; i--) {
temp = seq[i];
if (temp == 0) {
continue;
}
for (int j = i - 1; j >= 0; j--) {
if (temp == seq[j]) {
seq[j] = 0;
}
}
}
bool isFirst = true;
for (int i = 0; i < n; i++) {
if (seq[i] == 0) {
continue;
} else {
if (isFirst) {
printf("%d", seq[i]);
isFirst = false;
} else {
printf(" %d", seq[i]);
}
}
}
printf("\n");

}
return 0;
}


Date

2017 年 3 月 30 日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: