假设我们有一个二维二进制矩阵。在这里,每一行以升序排序,其中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