package Ġcom . leetcode Ċ Ċ class ĠNum Matrix ( matrix : ĠArray < IntArray >) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpartial Sum s Ġ= ĠArray ( matrix . size ) Ġ{ ĠInt Array ( matrix [ it ]. size ) Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmatrix . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġmatrix [ i ]. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Sum s [ i ][ j ] Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ== Ġ 0 Ġ&& Ġj Ġ== Ġ 0 Ġ-> Ġmatrix [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ== Ġ 0 Ġ-> Ġpartial Sum s [ i Ġ- Ġ 1 ][ j ] Ġ+ Ġmatrix [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ== Ġ 0 Ġ-> Ġpartial Sum s [ i ][ j Ġ- Ġ 1 ] Ġ+ Ġmatrix [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġpartial Sum s [ i Ġ- Ġ 1 ][ j ] Ġ+ Ġpartial Sum s [ i ][ j Ġ- Ġ 1 ] Ġ- Ġpartial Sum s [ i Ġ- Ġ 1 ][ j Ġ- Ġ 1 ] Ġ+ Ġmatrix [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsum Region ( row 1 : ĠInt , Ġcol 1 : ĠInt , Ġrow 2 : ĠInt , Ġcol 2 : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpartial Sum s [ row 2 ][ col 2 ] Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( row 1 Ġ== Ġ 0 ) Ġ 0 Ġelse Ġ- partial Sum s [ row 1 Ġ- Ġ 1 ][ col 2 ]) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( col 1 Ġ== Ġ 0 ) Ġ 0 Ġelse Ġ- partial Sum s [ row 2 ][ col 1 Ġ- Ġ 1 ]) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( row 1 Ġ== Ġ 0 Ġ|| Ġcol 1 Ġ== Ġ 0 ) Ġ 0 Ġelse Ġpartial Sum s [ row 1 Ġ- Ġ 1 ][ col 1 Ġ- Ġ 1 ]) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġnum Matrix Ġ= ĠNum Matrix ( array Of ( ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 3 , Ġ 0 , Ġ 1 , Ġ 4 , Ġ 2 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 5 , Ġ 6 , Ġ 3 , Ġ 2 , Ġ 1 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 1 , Ġ 2 , Ġ 0 , Ġ 1 , Ġ 5 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 4 , Ġ 1 , Ġ 0 , Ġ 1 , Ġ 7 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 1 , Ġ 0 , Ġ 3 , Ġ 0 , Ġ 5 ) ĊĠĠĠ Ġ)) ĊĊĠĠĠ Ġprintln ( num Matrix . sum Region ( 2 , Ġ 1 , Ġ 4 , Ġ 3 )) ĊĠĠĠ Ġprintln ( num Matrix . sum Region ( 1 , Ġ 1 , Ġ 2 , Ġ 2 )) ĊĠĠĠ Ġprintln ( num Matrix . sum Region ( 1 , Ġ 2 , Ġ 2 , Ġ 4 )) Ċ }