在Python中找到二进制矩阵中最左边的1出现的列索引的程序?
假设我们有一个二维的二进制矩阵。这里每行都按升序排列,0在1之前,我们要找到值为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
- leftmost:=-1
- 当i < N并且j >= 0时,执行以下操作:
- 如果矩阵[i,j]与0相同,则
- i:=i + 1
- 否则,
- leftmost:= j
- j:=j – 1
- 如果矩阵[i,j]与0相同,则
- 返回leftmost
更多Python相关文章,请阅读:Python 教程
示例
class Solution:
def solve(self, matrix):
if not matrix或not matrix [0]:
返回-1
N = len (matrix)
M = len (matrix [0])
i = 0
j = M-1
leftmost = -1
while i = 0:
if matrix [i] [j] == 0:
i + = 1
else:
leftmost = j
j- = 1
返回leftmost
ob = Solution()
矩阵= [
[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