分组飞行棋棋子

163 阅读2分钟

问题描述

小M和小F在玩飞行棋。游戏结束后,他们需要将桌上的飞行棋棋子分组整理好。现在有 N 个棋子,每个棋子上有一个数字序号。小M的目标是将这些棋子分成 M 组,每组恰好5个,并且组内棋子的序号相同。小M希望知道是否可以按照这种方式对棋子进行分组。

例如,假设棋子序号为 [1, 2, 3, 4, 5],虽然只有5个棋子,但由于序号不同,因此不能形成有效的分组。如果序号是 [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],则可以形成两个有效分组,因此输出为 True


测试样例

样例1:

输入:nums = [1, 2, 3, 4, 5]
输出:"False"

样例2:

输入:nums = [1, 1, 1, 1, 2, 1, 2, 2, 2, 2]
输出:"True"

样例3:

输入:nums = [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
输出:"True"

样例4:

输入:nums = [7, 7, 7, 8, 8, 8, 8, 8, 7, 7]
输出:"True"

样例5:

输入:nums = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
输出:"False"

Java

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

        for (int num : nums) {

            countMap.put(num, countMap.getOrDefault(num, defaultValue:0) + 1);

        }

        

        // 检查每个序号的棋子数量是否能被5整除

        for (int count : countMap.values()) {

            // 如果有一个序号的棋子数量不能被5整除,返回false

            if (count % 5 != 0) {

                return false;

            }

        }

        

        // 如果所有序号的棋子数量都能被5整除,返回true

        return true;

    }

    public static void main(String[] args) {

        // 你可以添加更多测试用例

        System.out.println(solution(new int[]{1, 3, 4, 5, 6, 5, 4})); // 预期输出: false

        System.out.println(solution(new int[]{1, 1, 1, 1, 2, 1, 2, 2, 2, 2})); // 预期输出: true

        System.out.println(solution(new int[]{11, 45, 49, 37, 45, 38, 3, 47, 35, 49, 26, 16, 24, 4, 45, 39, 28, 26, 14, 22, 4, 49, 18, 4, 4, 26, 47, 14, 1, 21, 9, 26, 17, 12, 44, 28, 24, 24, 10, 31, 33, 32, 23, 41, 41, 19, 17, 24, 28, 46, 28, 4, 18, 23, 48, 45, 7, 21, 12, 40, 2, 19, 19, 28, 32, 6, 27, 43, 6, 18, 8, 27, 9, 6, 6, 31, 37, 15, 26, 20, 43, 3, 14, 40, 20})); // 预期输出: false

    }

}

349

public class Main {    public static boolean solution(int[] nums) {        for (int num : nums) {

MarsCode AI

嗨,用户5959057827

你的代码陪练已到位

需要一点思路提示

给我一些代码提示

帮我检查一下代码