程序在Python的二进制矩阵中找到最左1的列索引?

假设我们有一个二维二进制矩阵。在这里,每一行以升序排序,其中0出现在1s之前,我们必须找到最左边的列索引,其值为1。如果没有这样的结果,则返回-1。

所以,如果输入像

0001
0011
0011
0010

那么输出将为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

    回到顶部