网易2017春招笔试真题编程题集合(4)——消除重复元素

时间限制:1秒

空间限制:32768K

小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。 
输入描述:
输入包括两行:
第一行为序列长度n(1 ≤ n ≤ 50)
第二行为n个数sequence[i](1 ≤ sequence[i] ≤ 1000),以空格分隔
输出描述:
输出消除重复元素之后的序列,以空格分隔,行末无空格
输入例子:
9
100 100 100 99 99 99 100 100 100
输出例子:
99 100

代码:方法一
package pro01;
import java.util.*;
//思路:一、要移除重复元素,用TreeSet集合即可,因为它的add方法只添加不重复的元素
//      二、要保留最后出现的那个,倒着顺序添加就可以了
//      三、因为TreeSet还有排序的功能,所以不能添加完后再输出。而是每添加一个,将这个元素再存到另一个ArrayList里面
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();//序列长度n
            int[] sequence=new int[n];
            for(int i=0;i<n;i++){
                sequence[i]=sc.nextInt();
            }
            Set<Integer> set=new TreeSet<Integer>();
            List<Integer> list=new ArrayList<Integer>(); 
            for(int i=n-1;i>=0;i--){//倒序添加
                if(set.add(sequence[i])){
                    list.add(sequence[i]);
                }
            }
            for(int i=list.size()-1;i>0;i--)//再倒序输出
                System.out.print(list.get(i)+" ");
            System.out.println(list.get(0));
        }
        sc.close();
    }
}

方法二:

package pro01;
import java.util.*;
//思路:一、用ArrayList即可,不过要倒序添加,且要判断有重复元素时不添加(ArrayList有contains方法),最后再倒序输出
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();//序列长度n
            int[] sequence=new int[n];
            for(int i=0;i<n;i++){
                sequence[i]=sc.nextInt();
            }
            List<Integer> list=new ArrayList<Integer>(); 
            for(int i=n-1;i>=0;i--){//倒序添加
                if(!list.contains(sequence[i])){
                    list.add(sequence[i]);
                }
            }
            for(int i=list.size()-1;i>0;i--)//再倒序输出
                System.out.print(list.get(i)+" ");
            System.out.println(list.get(0));
        }
        sc.close();
    }
}
原文地址:https://www.cnblogs.com/dengyt/p/6908092.html