题解 | #明明的随机数#

明明的随机数

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

}

全部评论

相关推荐

白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 17:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务