zoukankan      html  css  js  c++  java
  • 网易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();
        }
    }
  • 相关阅读:
    调停者模式
    组合模式
    单例模式
    策略模式
    代理模式
    AJPFX简述Context.startService()和Context.bindService
    AJPFX简述abstract class和interface的区别
    AJPFX关于抽象类和接口的区别
    AJPFX关于StringBuffer,StringBuilder类 总结(一)
    AJPFX关于StringBuffer,StringBuilder类总结(二)
  • 原文地址:https://www.cnblogs.com/dengyt/p/6908092.html
Copyright © 2011-2022 走看看