程序在Python的二进制矩阵中找到最左1的列索引?
假设我们有一个二维二进制矩阵。在这里,每一行以升序排序,其中0出现在1s之前,我们必须找到最左边的列索引,其值为1。如果没有这样的结果,则返回-1。
所以,如果输入像
0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 |
0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 |
那么输出将为2,因为第二列在整个矩阵中剩下最多1。
为了解决这个问题,我们将按照以下步骤操作:
如果矩阵为空,则
返回-1
N:=矩阵的行数
M:=矩阵的列数
i:= 0,j:= M-1
最左边:= -1
当i <N和j> = 0时,
最左边:= j
j:= j-1
我:=我+ 1
如果matrix [i,j]等于0,则
除此以外,
返回最左边
示例
class Solution:def solve(self, matrix):
if not matrix or not matrix[0]:
return -1
N = len(matrix)
M = len(matrix[0])
i = 0
j = M - 1
leftmost = -1
while i < N and j >= 0:
if matrix[i][j] == 0:
i += 1
else:
leftmost = j
j -= 1
return leftmost
ob = Solution()matrix = [
[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 1, 1],
[0, 0, 1, 0]
]
print(ob.solve(matrix))
输入值
[[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 1, 1],
[0, 0, 1, 0] ]
输出结果
2
以上是 程序在Python的二进制矩阵中找到最左1的列索引? 的全部内容, 来源链接: utcz.com/z/316066.html