输出数组中不重复,或者输出特定次数的数组

    科技2025-05-30  44

    随机生成1000个1~100之内的整数,统计出不重复的数值和其重复的次数

    Random rand = new Random(); int[]arr = new int[1000]; int[]unique = new int[100]; int[]count = new int[100]; int k = 0; unique[k]=rand.nextInt(100)+1; arr[0]=unique[k]; count[k++]=1; for (int i=0,j; i < arr.length; i++) { arr[i]=rand.nextInt(100)+1; for (j = 0; j <k; j++) { if(unique [j]==arr[i]){ break; } } if(j==k){ unique[k]=arr[i]; count[k++]=1; } else{ count[j]++; } }

    随机生成100个,取值1~50之间的整数,任何单值重复不超过两次,输出其数组

    Random rand = new Random(); final int N=100; int[] arr=new int[N]; //重复不超过两次的数组 int ix = 0; //uqarr数组中已存入的元素个数 int[] uqarr = new int[N]; //用于存放不重复值的数组 int[] uqcnt = new int[N]; //用于计uqarr数组每个元素的重复个数 for (int i = 0,t,tx; i < arr.length; ) { t=rand.nextInt(50)+1; tx = -1; for (int j = 0; j <ix; j++) { if (t==uqarr[j]){ //生成的数t跟uqarr数组中的值uqarr[j]有重复,执行tx=j的下标交换,并跳出for循环,判断下面的重复次数是否超过2次 tx = j; break; } } if(tx!=-1&&uqcnt[tx]>=2)continue; //若生成的数t和uqarr数组有重复且重复的次数超过两次,则再重新生成t,判断是否重复 //有两种情况才会执行到以下步骤:1:随机数t跟所有uqarr[j]不同,for循环,j++遍历整个数组,直到j<ix退出循环,此时tx=-1;2:随机数t找到跟uqarr[j]相同,且重复没超过2次 arr[i++]=t; //则把t赋值给arr[i],且i++; if (tx==-1){ //若是情况1,则把t值放到uqarr数组中,并计一次数 uqarr[ix] =t; uqcnt[ix++]++; }else { uqcnt[tx]++; //若是情况2,tx=j的下标已交换,uqcnt计数 } } for (int i = 0; i < ix; i++) { System.out.println(uqarr[i]+":"+uqcnt[i]); } int cnt = 0; for (int i : arr) { System.out.print(i+"\t"); if (++cnt%14==0){ System.out.println(); } }
    Processed: 0.011, SQL: 8