二维数组处理
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])
我有一个二维数组,其中包含一个 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])