【问题标题】:Best way to check all partners of a multidimensional array?检查多维数组的所有伙伴的最佳方法?
【发布时间】:2017-09-01 23:15:16
【问题描述】:

我有一个非常常见的问题,我讨厌通过编写所有可能的组合来解决这个问题,那么最好的方法是什么? 例如: x = [[['0', '0', '1'], ['0', '0', '0'], ['1', '1', '0']], [[' 0', '0', '1'], ['0', '0', '0'], ['1', '1', '0']], [['0', '0' , '1'], ['0', '0', '0'], ['1', '1', '0']]]

所以 x[i][j][k] 都可以访问等。假设我想找到 x[1][1][1] 的合作伙伴,最好的方法是什么?

【问题讨论】:

    标签: arrays multidimensional-array


    【解决方案1】:

    您的问题很枯燥,无法解释您到底要达到什么目标以及遇到什么错误/问题。此外,您似乎没有为研究该主题付出任何努力,就像您说的“非常普遍的问题”。

    假设“伙伴”是指邻居/相邻元素,您可以执行以下操作: 让我们以二维数组为例,顶部和侧面的数字表示行和列,“-”和“X”是数组中的值。

      0  1  2  3
    0 -  X  -  X
    1 -  -  X  X
    2 X  X  -  X
    3 -  -  -  -
    

    假设您想在数组中找到与 arr[1][1] = '-' 相邻的地址。 您所要做的就是检查,如果您在行或列中添加或减少一个位置,它是否会溢出数组(例如:第 2 行是否存在于数组中,如果存在,那么它相邻的是 arr[ 2][1])。为此,您必须为每一行/列(/另一个维度)增加和减少一个值:

    arr[1][0]
    arr[1][2]
    arr[0][1]
    arr[2][1]
    

    它们都存在于数组中,其行跨度为 0-3,列跨度为 0-3。

    奖励:如果您想找到相邻元素的值,您只需要求显示现有相邻元素的值(调用 arr[1][0 ])。

    互联网上有很多方法和技巧,尤其是在 Stack Overflow 中。检查此链接,可能会给您一些想法:2d array, all values are adjacent

    【讨论】:

    • 抱歉这个问题不好,我理解这个解决方案,因为它是我每次查找时看到的。我希望有更好的方法来做到这一点,而不是将所有值放在一个整体中,索引 +- 1 的想法。
    • 如果您多次执行此操作,您可以从中创建一个函数,甚至可以创建一个可以扫描不同大小数组中不同类型事物的类。
    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多