P1059 明明的随机数 排列好的数组如何去重统计,如何去除数组重复的数字
程序员文章站
2022-07-16 10:51:38
...
虽然这个题目比较简单,不用STL这个还算是比较好理解的
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);
}
}
*/