二维数组处理

2D arrays processing

我有一个二维数组,其中包含一个 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()
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 的解决方案。

这个简单的代码将为您提供每行和每列中 1 的总数

a = [[1,0,1,1],[0,1,0,1]]
counters_rows = [0, 0]
counters_cols = [0, 0, 0, 0]

for i in range(len(a)) :  
    for j in range(len(a[i])) :  
          if a[i][j] == 1:
            counters_rows[i]+=1
            counters_cols[j]+=1

print('rows: ')
for i in range(len(counters_rows)):
  print(counters_rows[i])

print('columns: ')
for i in range(len(counters_cols)):
  print(counters_cols[i])