You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

宾果游戏开发:如何判断array1与array2是否存在相同数字?

判断两个数组是否存在共同元素的解决方案

针对你宾果游戏开发中遇到的「判断用户输入数组(array1)是否包含随机数组(array2)任意数字」的问题,以下是几种实用的实现方案:

核心思路

本质是检查两个数组是否存在交集(即共同元素),不管元素位置。优先用集合实现,因为集合的查找效率远高于数组遍历;如果是新手,也可以用基础的遍历方式理解逻辑。


Python 实现

完整代码

import random

# 获取用户输入的10个数字(含简单校验)
array1 = list(map(int, input("请输入10个数字,用空格分隔:").split()))
while len(array1) != 10:
    array1 = list(map(int, input("请输入恰好10个数字,用空格分隔:").split()))

# 生成1-21之间的10个不重复随机数
array2 = random.sample(range(1, 22), 10)
print("随机数组:", array2)

# 方法1:集合交集(高效简洁)
if set(array1) & set(array2):
    print("存在共同数字!")
else:
    print("没有共同数字!")

# 方法2:遍历检查(适合新手理解)
has_common = False
for num in array1:
    if num in array2:
        has_common = True
        break
print("存在共同数字!" if has_common else "没有共同数字!")

说明

  • random.sample() 确保生成的10个随机数不重复,符合宾果游戏的常规逻辑;
  • 集合交集操作set1 & set2会返回所有共同元素,只要结果非空就说明存在交集;
  • 遍历方式逐个检查元素,找到匹配项后立即终止循环,减少不必要的计算。

Java 实现

完整代码

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;

public class BingoChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Integer> array1 = new ArrayList<>();

        // 获取用户输入的10个数字
        System.out.println("请输入10个数字,用空格分隔:");
        while (array1.size() < 10) {
            array1.add(scanner.nextInt());
        }

        // 生成1-21之间的10个不重复随机数
        ArrayList<Integer> array2 = new ArrayList<>();
        Random random = new Random();
        while (array2.size() < 10) {
            int num = random.nextInt(21) + 1; // 生成1到21的随机数
            if (!array2.contains(num)) {
                array2.add(num);
            }
        }
        System.out.println("随机数组:" + array2);

        // 用HashSet优化查找效率
        HashSet<Integer> numSet = new HashSet<>(array1);
        boolean hasCommon = false;
        for (int num : array2) {
            if (numSet.contains(num)) {
                hasCommon = true;
                break;
            }
        }

        System.out.println(hasCommon ? "存在共同数字!" : "没有共同数字!");
    }
}

说明

  • 用HashSet存储用户输入的数字,将数组查找的O(n)时间复杂度降为O(1);
  • 生成随机数时通过contains()确保不重复,避免宾果游戏中出现重复数字的问题。

内容的提问来源于stack exchange,提问作者babula40

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:10:14