题解 | #明明的随机数#
明明的随机数
http://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
1:因为题目中说了有多组测量数据,但是具体多少组数据未知,所有要用Scanner的hasNext()方法吧输入监控起来。
2:每组数据由一个整型数据N和一个长度为N的整型数组分两行输入,要用for(int i=0;i<N;i++){int[] c[i] = Scanner.NextInt}实现。
3:先对数组进行去重,这块遍历数组,用HashSet的add()方法实现。
4:去重后再用Iterator吧HashSet集合转换成一个数组,然后进行冒泡法排序。
实现可能比较赘余,但是思路清晰,好理解,小白学习起来很好,思路上没有比较绕的地方。代码如下(已通过测试):
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int num = sc.nextInt();
int[] arr = new int[num];
for(int i = 0;i<arr.length;i++){
arr[i] = sc.nextInt();
}
function(num,arr);
}
} private static void function(int num, int[] arr) { HashSet<Integer> ha = new HashSet<Integer>(); for(int j=0;j<arr.length;j++){ ha.add(arr[j]); } int[] arr1 = new int[ha.size()]; int count = 0; Iterator it = ha.iterator(); while(it.hasNext()){ arr1[count++] = (int) it.next(); } //经典冒泡法 for(int k=0;k<arr1.length-1;k++){ for(int k1=0;k1<arr1.length-1-k;k1++){ if(arr1[k1] > arr1[k1+1]){ int temp = arr1[k1]; arr1[k1] = arr1[k1+1]; arr1[k1+1] = temp; } } } for(int g = 0;g<arr1.length;g++){ System.out.println(arr1[g]); } }
}