Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2DMatrixIIを検索する


1つのmxn行列があるとします。その行列の値を検索する効率的なアルゴリズムを作成する必要があります。この行列には次のプロパティがあります-

  • 各行の整数は、左から右に昇順で並べ替えられます。
  • 各列の整数は、上から下に昇順で並べ替えられます。

したがって、行列が-

のような場合
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を返し、ターゲットが20の場合はfalseを返します

これを解決するには、次の手順に従います-

  • len:=列数、c1:=0、c2:=len – 1
  • 真実である間
    • matrix [c1、c2] =targetの場合、trueを返します
    • それ以外の場合、matrix [c1、c2]> targetの場合、c2:=c2 – 1、続行
    • c1:=c1 + 1
    • c1>=行数またはc2<0の場合、falseを返します
    • 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

  1. PythonでMatrixを初期化する

    この記事では、Python3.xで2次元リストを使用して行列を初期化する方法について学習します。またはそれ以前。 Python言語のみが提供するマトリックスを初期化する直感的な方法を見てみましょう。ここでは、リスト内包表記を利用します。内部リストを初期化し、リスト内包表記を使用して複数の行に拡張します。 例 # input the number of rows N = 3 # input the number of columns M = 3 # initializing the matrix res = [ [ i*j for i in range(N) ] for j in range(

  2. Pythonで行列を転置しますか?

    行列を転置するということは、その列をその行に変換することを意味します。転置後にどのように見えるかを例で理解しましょう。 -のような元の行列があるとします。 x = [[1,2][3,4][5,6]] 上記の行列「x」には、1、3、5と2、4、6を含む2つの列があります。 したがって、行列「x」の上に転置すると、列が行になります。したがって、上記のマトリックスの転置バージョンは次のようになります- x1 = [[1, 3, 5][2, 4, 6]] したがって、別のマトリックス「x1」があります。これは、さまざまな場所でさまざまな値を使用してさまざまに編成されています。 以下は、Pyt