gpt4 book ai didi

java - 在二维阵列中发现相同的图案

转载 作者:行者123 更新时间:2023-12-02 01:16:16 27 4
gpt4 key购买 nike

在一次采访中,我收到了许多二维数组,并要求我识别和计算每个数组中出现的相同模式的值。

模式可以是任何形式。它们可以是正方形、十字形,也可以是任何重复的形状。

从图形上看,数据看起来像这样:

ArrayOne
[0][1][1][0]
[0][1][1][0]

ArrayTwo
[1][1][0][0]
[0][1][0][0]
[0][1][0][0]

ArrayThree
[0][1]1][0]
[0][1][1][0]
[0][0][0][0]
[0][0][0][0]

作为输出,人们期望看到:

ArrayOne ArrayThree - "Two occurrencies"
ArrayTwo ArrayTwo - "One occurency"

就目前情况而言,我不知道如何迭代此类数组以检索它们的模式。当然,我们可以计算每个数组中“1”的数量,但实际上,它没有任何用处,也不能回答问题。

非常感谢关于如何在 Java 或任何其他广泛使用的面向对象语言中实现这一目标的建设性建议。

编辑:更新了数组内容以消除原始帖子中存在的困惑

最佳答案

They may be squares, crosses

在我看来,“模式”的定义是一组相连的非零单元。对角线是否被认为是连通的还有待争论,但对于正方形和十字形来说则不需要。

现在将所有这些模式收集到 Set 中二维数组。例如。请参阅Find the number of islands了解如何找到模式。

示例:

1 1 1 1 0
0 1 0 0 0
1 1 0 1 1
1 0 0 1 0

包含 2 个模式:

1 1 1 1     1 1
0 1 0 0 1 0
1 1 0 0
1 0 0 0

建立一个Set每个输入数组的模式,然后查看这些集合是否具有共同模式。

或者,如果您有许多输入数组,请构建 Map<Pattern, List<String>> ,其中Pattern是一个包装二维数组并实现 equals() 的类和hashCode() ,以及 String是输入数组的名称。

关于java - 在二维阵列中发现相同的图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58499705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com