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

【网易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[n];
        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 日

posted @ 2017-03-30 11:11  负雪明烛  阅读(26)  评论(0编辑  收藏  举报