欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P1059 明明的随机数 排列好的数组如何去重统计,如何去除数组重复的数字

程序员文章站 2022-07-16 10:51:38
...

虽然这个题目比较简单,不用STL这个还算是比较好理解的

P1059 明明的随机数 排列好的数组如何去重统计,如何去除数组重复的数字

package 排序;

import java.util.Scanner;

public class P1059 {
    public static void main(String[] args) {
        Scanner sc =  new Scanner(System.in);
        int N = sc.nextInt();
        int[] array = new int[N];
        for(int i=0;i<=N-1;i++){
            array[i]= sc.nextInt();
        }
        sort(array);
        int count = findcongfu(array);
        //进行去重操作
        System.out.println(count);
        qucong(array);
        for(int i=0;i<=count-1;i++){
            System.out.print(array[i]+" ");
        }
    }
    public static void sort(int[] array){
        int count=0;
        for(int i=0;i<array.length;i++){
            int min = i;
            for(int j=i+1;j<array.length;j++){
                //如果最小的比当前的值要大
                if(array[j]<array[min]){
                    min = j;
                }
            }
            //交换最小的和当前的值
            if(i!=min){
                int temp = array[i];
                array[i]=array[min];
                array[min] = temp;
            }
        }
    }
    public static void qucong(int[] arr){
        for(int i=0;i<arr.length-1;i++) {
            if (arr[i] == arr[i + 1]) {
                for (int j = i + 1; j < arr.length - 1; j++) {
                    arr[j] = arr[j + 1];
                }
            }
        }
    }
    public static int findcongfu(int[] arrayDemo){
        if (arrayDemo.length == 0) {
            return 0;
        }
        int i = 0;
        for (int j = 1; j < arrayDemo.length; j++) {
            if (arrayDemo[j] != arrayDemo[i]) {
                i++;
                arrayDemo[i] = arrayDemo[j];
            }
        }
        return i + 1;
    }
}


/*如何快速的将数组排序去重
https://www.cnblogs.com/daleyzou/p/9522533.html
int [] array = {1,3,4,3,2,5,6,3,9,22};
       //hashset可以直接去重
    HashSet<Integer> hashset = new HashSet<Integer>();//去重
        for (int i = 0;i<array.length;i++){
        hashset.add(array[i]);
        }
        TreeSet<Integer> treeSet = new TreeSet<Integer>(hashset);//转成treeset排序
        Integer [] integers = treeSet.toArray(new Integer[]{});//转成integer数组
        int [] ints = new int[integers.length];
        //foreach仅可用于遍历输出数组,但不能用于修改数组。
        for (int i = 0;i<integers.length;i++){
        ints[i] = integers[i].intValue();
        }
        Arrays.stream(ints).forEach(System.out::println);

        }
        }
*/