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]