程序在Python的二进制矩阵中找到最左1的列索引?
假设我们有一个二维二进制矩阵。在这里,每一行以升序排序,其中0出现在1s之前,我们必须找到最左边的列索引,其值为1。如果没有这样的结果,则返回-1。
所以,如果输入像
那么输出将为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