巧用HashSet装载非重数据(记洛谷P2250题,Java语言描述)

题目要求

P2550题目链接

在这里插入图片描述
在这里插入图片描述

分析

其实既然是Java来写,不用集合框架就是浪费啊!!
比较简单的思路是把中奖号码放进HashSet里,利用Hash来查找。
contains()就避免了又双叒叕疯狂遍历~~
用一个数组记录中奖情况即可~~

AC代码(Java语言描述)

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());
        String[] correctArray = scanner.nextLine().split(" ");
        Set<String> set = new HashSet<>();
        for (String str : correctArray) {
            set.add(str);
        }
        int[] resultArray = new int[7];
        for (int i = 0; i < num; i++) {
            int counter = 0;
            for (int j = 0; j < 7; j++) {
                if (set.contains(scanner.next())) {
                    counter++;
                }
            }
            if (counter != 0) {
                resultArray[7-counter]++;
            }
        }
        for (int i = 0; i < 6; i++) {
            System.out.print(resultArray[i] + " ");
        }
        System.out.println(resultArray[6]);
        scanner.close();
    }
}

About~~HashSet

还是老规矩,这里不详细分析,以后再说吧。

值得一提的是HashSet基于HashMap实现:
在这里插入图片描述

感兴趣的Reader自己多去看看源码趴~~

另外,Hash确实快,真的快~~

发布了351 篇原创文章 · 获赞 610 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/103699291