题解 | #明明的随机数#

明明的随机数

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]);
    }
}

}

全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务