
Matrix Block Sum тАУ 2D Prefix Sum | Running Sum of 2D Array | C++, Java, Python
RisingBrain
Overview
рдпрд╣ рд╡реАрдбрд┐рдпреЛ 2D рдПрд░реЗ (рдореИрдЯреНрд░рд┐рдХреНрд╕) рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рд╕рдо рдпрд╛ рд░рдирд┐рдВрдЧ рд╕рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ k рд░реЗрдбрд┐рдпрд╕ рдХреЗ рднреАрддрд░ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O(m*n*k^2) рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╣реИред рдлрд┐рд░, рдпрд╣ рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо (2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рд╕рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реВрддреНрд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O(m*n) рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
Save this permanently with flashcards, quizzes, and AI chat
Chapters
- рд╕рдорд╕реНрдпрд╛: рджрд┐рдП рдЧрдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ (i, j) рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдореЗрдВ рдореВрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЙрди рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реЛ рдЬреЛ (i, j) рд╕реЗ k рджреВрд░реА рдХреЗ рднреАрддрд░ (рдКрдкрд░, рдиреАрдЪреЗ, рдмрд╛рдПрдВ, рджрд╛рдПрдВ рдФрд░ рд╡рд┐рдХрд░реНрдг) рд╣реИрдВред
- рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рд╡рд┐рдзрд┐: рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ (i, j) рдХреЗ рд▓рд┐рдП, k рд░реЗрдбрд┐рдпрд╕ рдХреЗ рднреАрддрд░ рд╕рднреА рд╡реИрдз рддрддреНрд╡реЛрдВ (рдкрдВрдХреНрддрд┐ i-k рд╕реЗ i+k рдФрд░ рдХреЙрд▓рдо j-k рд╕реЗ j+k рддрдХ) рдХреЛ рд╕реАрдзреЗ рдЬреЛрдбрд╝реЗрдВред
- рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛: рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓рдЧрднрдЧ (2k+1) * (2k+1) рддрддреНрд╡реЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреБрд▓ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O(m*n*(2k+1)^2) рдпрд╛ рд▓рдЧрднрдЧ O(m*n*k^2) рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ k рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреАрдореА рд╣реИред
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп: рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЖрдпрддрд╛рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХреЛ O(1) рд╕рдордп рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдирд╛, рдмрд╛рд░-рдмрд╛рд░ рдЧрдгрдирд╛ рд╕реЗ рдмрдЪрдирд╛ред
- рдкреНрд░реАрдлрд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг: рдПрдХ рдирдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдЖрдорддреМрд░ рдкрд░ рдореВрд▓ рд╕реЗ рдПрдХ рдЖрдХрд╛рд░ рдмрдбрд╝рд╛) рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ (i, j) рдореВрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ (0,0) рд╕реЗ (i-1, j-1) рддрдХ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдпреЛрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
- рдкреНрд░реАрдлрд┐рдХреНрд╕ рдпреЛрдЧ рд╕реВрддреНрд░: рдкреНрд░реАрдлрд┐рдХреНрд╕[i][j] = рдореИрдЯреНрд░рд┐рдХреНрд╕[i-1][j-1] + рдкреНрд░реАрдлрд┐рдХреНрд╕[i-1][j] + рдкреНрд░реАрдлрд┐рдХреНрд╕[i][j-1] - рдкреНрд░реАрдлрд┐рдХреНрд╕[i-1][j-1]ред рдпрд╣ рд╕реВрддреНрд░ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рджреЛ рдмрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред
- рд▓рдХреНрд╖реНрдп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг: рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрддрд░ рд╕реЗрд▓ (i, j) рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдКрдкрд░реА-рдмрд╛рдПрдВ рдХреЛрдиреЗ (r1, c1) рдФрд░ рдирд┐рдЪрд▓реЗ-рджрд╛рдПрдВ рдХреЛрдиреЗ (r2, c2) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ (i-k, j-k) рд╕реЗ (i+k, j+k) рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реИрдВред
- рд╕реАрдорд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди: r1, c1, r2, c2 рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╡реИрдз рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рд░рд╣реЗрдВ (0 рд╕реЗ m-1 рдФрд░ 0 рд╕реЗ n-1 рддрдХ)ред
- рдмреНрд▓реЙрдХ рдпреЛрдЧ рд╕реВрддреНрд░ (рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ): рдПрдХ рдмрд╛рд░ r1, c1, r2, c2 рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдмреНрд▓реЙрдХ рдХрд╛ рдпреЛрдЧ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ: рдкреНрд░реАрдлрд┐рдХреНрд╕[r2+1][c2+1] - рдкреНрд░реАрдлрд┐рдХреНрд╕[r1][c2+1] - рдкреНрд░реАрдлрд┐рдХреНрд╕[r2+1][c1] + рдкреНрд░реАрдлрд┐рдХреНрд╕[r1][c1]ред рдпрд╣ 2D рд░реЗрдВрдЬ рдпреЛрдЧ рд╕реВрддреНрд░ рдХрд╛ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред
- рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛: рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ O(m*n) рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрддреНрддрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рднрд░рдиреЗ рдореЗрдВ рднреА O(m*n) рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдХреБрд▓ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O(m*n) рд╣реИред
- рд╕реНрдерд╛рди рдЬрдЯрд┐рд▓рддрд╛: рд╣рдореЗрдВ рдореВрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдПрдХ рдЙрддреНрддрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдерд╛рди рдЬрдЯрд┐рд▓рддрд╛ O(m*n) рд╣реИред
- рдорд╣рддреНрд╡: рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдмрдбрд╝реЗ рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░ рдФрд░ k рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрди рдЬрд╛рддрд╛ рд╣реИред
Key takeaways
- 2D рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рдо рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдХреНрд╖рдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╛рд░-рдмрд╛рд░ рд╕рдорд╛рди рдЙрдк-рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЖрдпрддрд╛рдХрд╛рд░ рдЙрдк-рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХреЛ O(1) рд╕рдордп рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИред
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ (i, j) рдореВрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ (0,0) рд╕реЗ (i-1, j-1) рддрдХ рдХреЗ рдпреЛрдЧ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рдпреЛрдЧ рд╕реВрддреНрд░ рд╣реИ: P[i][j] = M[i-1][j-1] + P[i-1][j] + P[i][j-1] - P[i-1][j-1], рдЬрд╣рд╛рдВ P рдкреНрд░реАрдлрд┐рдХреНрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ рдФрд░ M рдореВрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИред
- рдмреНрд▓реЙрдХ рд╕рдо рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓рдХреНрд╖реНрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХреЛрдиреЛрдВ (r1, c1) рдФрд░ (r2, c2) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 2D рд░реЗрдВрдЬ рдпреЛрдЧ рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдпреЛрдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
- рдЕрдиреБрдХреВрд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O(m*n) рд╣реИ, рдЬреЛ рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред
Key terms
Test your understanding
- рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг 2D рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рдо рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдЕрдХреНрд╖рдо рд╣реИ?
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ?
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рдпреЛрдЧ рд╕реВрддреНрд░ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдУрд╡рд░рд▓реИрдк рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?
- 2D рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╕рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реЗрд▓ (i, j) рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реВрддреНрд░ рдХреНрдпрд╛ рд╣реИ?
- рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рдордп рдФрд░ рд╕реНрдерд╛рди рдЬрдЯрд┐рд▓рддрд╛ рдХреНрдпрд╛ рд╣реИ?