网易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(); } }