首页 > 解决方案 > 二维数组处理

问题描述

我有一个包含 0 或 1 的二维数组,我想编写一个程序来检查是否有两个 1 位于同一行或列上。它应该是一个 O(n**2) 算法。我在python中编写了一个循环遍历数组的for循环,但我不知道如何检查行或列中是否包含两个1,也许有人可以给我一些提示。提前致谢

a = [[1,0,1,1],[0,1,0,1]]

for i in range(len(a)) :  
    for j in range(len(a[i])) :  

          print(a[i][j], end=" ")


    print()

标签: python-3.xmultidimensional-arrayarray-algorithms

解决方案


def two_adjacent_ones(arr):
    for i in range(len(arr) - 1):
        for j in range(len(arr[i]) - 1):
            if (arr[i][j] == 1 and arr[i][j + 1] == 1) or (arr[i][j] == 1 and arr[i + 1][j] == 1):
                return True

    last_row = arr[len(arr) - 1]
    for i in range(len(last_row) - 1):
        if last_row[i] == last_row[i + 1] and last_row[i] == 1:
            return True

    last_column = [arr[i][-1] for i in range(len(arr) - 1)]
    for i in range(len(last_column) - 1):
        if last_column[i] == last_column[i + 1] and last_column[i] == 1:
            return True

    return False

b = [[1, 0, 1, 0], [0, 1, 1, 0]]

print(two_adjacent_ones(b))

这是我现在想出的最迭代的而不是 Pythonic 的解决方案。


推荐阅读