算法题:删除数组中存在重复的数字,并将剩余数字输出

1,思路分析

我的思路是在创建一个数组,使用两个嵌套for循环对数组的每一个元素和其他元素相比较,当发现有相同的数字时则不把这个数字存入到另一个数组中,反之则存入,最后将新建数组的元素输出出来,同时注意排除数组初始化时的0。

2, 代码实现

       

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int m=0;//标志位,用来判断数组中是否存在相同元素   0为存在,1为不存在
        System.out.println("请输入数组的长度:");
        int n=sc.nextInt();
        int[] arr=new int[n];
        int[] arr1=new int[n];
        System.out.println("请输入数组的元素");
        Scanner sc1=new Scanner(System.in);
        for(int i=0;i<=n-1;i++){
            arr[i]=sc1.nextInt();
        }

        for(int i=0;i<arr.length;i++){//将数组的每一个元素和其他元素进行比较,出现相同元素并且数组下标不同,则令m=0,若没有出现相同元素,则令m=1
            for (int j=0;j<arr.length;j++){
                if(arr[i]==arr[j]&&i!=j){
                    m=0;
                    break;
                }else{
                    m=1;
                }
            }
            if(m==1){//没有重复的数字存到另一个数组中
                arr1[i]=arr[i];
            }
        }
        for(int k=0;k<arr1.length;k++){
            if(k==0){
                System.out.print("[");
            }
            if(arr1[k]!=0 && k!=arr1.length-1) {
                System.out.print(arr1[k]+",");
            }
            if(arr1[k]!=0 &&k==arr1.length-1){
                System.out.print(arr1[k]);
            }
            if(k==arr.length-1){
                System.out.print("]");
            }
        }

    }
请输入数组的长度:
6
请输入数组的元素
1
1
2
5
6
9
[2,5,6,9]

3,存在的问题

        这样子来解决需要数组当中不能出现0,不然在结果输出的时候将会把0给剔除,暂时还没想到更好的解决办法,代码还不够严谨,时间复杂度较高为o(n^{2}),用到了两个嵌套for循环,需要找到提升点。


版权声明:本文为m0_47187960原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。