二次元領域304を検索 - 不変マトリックス(動的プログラミング)

2次元マトリクスを与え、そのサブ矩形の和が要素の範囲を算出する、サブマトリクスの左上隅( 1、  COL。1)、右下隅( 2、  COL 2)。leetcodeから

 

 

この問題は、問題のおなじみのクラスだけでなく、単純な動的プログラミング問題、二つのサブマトリクス領域=領域の両方である - +右下の領域面積を繰り返し

収穫:いくつかは少しの習慣を学ぶ価値があります

  直接のリターンは、私は常に返すようにするか否かについて考えます。1.特別な裁判官0

    デフ__init __(自己、行列):

      行列ではない場合:

        リターン

  2.動的計画方程式leetcod IDコードダニエルを学んでいる、地域を祈ることは、常に、カウントすることはできませんここでは、すべての良いとされ、その後、一緒に描かれたことができます

クラスNumMatrix:

    デフ__init __(自己、行列:リスト[一覧[INT]]):
        (ない行列)の場合:
            リターン
        M = LEN(マトリックス)
        N = LEN(行列[0])
        self.dp = [0] *(N + 1)の範囲内_ため(M + 1)]
        I範囲(1、M + 1)でのために:
            範囲内のJ(1、N + 1)のために:
                self.dp [I] [J] = self.dp [I-1]〜[J] + self.dp [I]、[J-1] +行列[I-1] [J-1] -self.dp [ I-1] [J-1]
        

    デフsumRegion(自己、ROW1:INT、COL1:INT、ROW2:INT、COL2ます。int) - > int型:
        戻りself.dp [ROW2 + 1] [COL2 + 1] -self.dp [ROW2 + 1] [COL1] -self.dp [ROW1] [COL2 + 1] + self.dp [ROW1] [COL1]

 

おすすめ

転載: www.cnblogs.com/ChevisZhang/p/12358378.html