在Python中搜索2D Matrix II

   假设我们有一个mxn矩阵。我们必须编写一种有效的算法来搜索该矩阵中的值。该矩阵具有以下属性-

  • 每行中的整数按从左到右的升序排列。

  • 每列中的整数按从上到下的升序排列。

所以如果矩阵像-

1471115
2581219
3691622
1013141724
1821232630

如果目标为5,则返回true,如果目标为20,则返回false

为了解决这个问题,我们将遵循以下步骤-

  • len:=列数,c1:= 0,c2:= len – 1

  • 虽然真实

    • 如果matrix [c1,c2] =目标,则返回true

    • 否则,如果matrix [c1,c2]>目标,则c2:= c2 – 1,继续

    • c1:= c1 +1

    • 如果c1> =行计数或c2 <0,则返回false

    • 返回假

让我们看下面的实现以更好地理解-

示例

class Solution:
   def searchMatrix(self, matrix, target):
      try:
         length = len(matrix[0])
         counter1, counter2 = 0, length-1
         while True:
            if matrix[counter1][counter2] == target:
               return True
            elif matrix[counter1][counter2]>target:
               counter2-=1
               continue
            counter1 = counter1 + 1
            if counter1 >= len(matrix) or counter2<0:
               return False
         except:
            return False
ob1 = Solution()print(ob1.searchMatrix([[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], 5))

输入值

[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]]
5

输出结果

True