MCPcopy Create free account
hub / github.com/Manvityagi/PW-Skills-Java-Course-Codes / RectangleSum

Class RectangleSum

Lecture 23/src/RectangleSum.java:3–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1import java.util.Scanner;
2
3public class RectangleSum {
4 static int findSum(int[][] matrix, int l1, int r1, int l2, int r2) {
5 int sum = 0;
6 for(int i = l1; i <= l2; i++){
7 for(int j = r1; j <= r2; j++){
8 sum += matrix[i][j];
9 }
10 }
11 return sum;
12 }
13
14 //calculate row-wise and column wise sum
15 // matrix[i][j] = sumRectangle( (0,0) (i,j))
16 static void findPrefixSumMatrix(int[][] matrix){
17 int r = matrix.length;
18 int c = matrix[0].length;
19 // traverse horizontally to calculate row-wise prefix sum
20 for(int i = 0; i < r; i++){
21 for(int j = 1; j < c; j++){
22 matrix[i][j] += matrix[i][j-1];
23 }
24 }
25
26 //traverse vertically to calculate column-wise sum
27 for(int j = 0; j < c; j++){ // fixing column
28 for(int i = 1; i < r; i++){
29 matrix[i][j] += matrix[i-1][j];
30 }
31 }
32 }
33
34 //only row-wise prefix sum method
35 static int findSum2(int[][] matrix, int l1, int r1, int l2, int r2) {
36 int sum = 0;
37 findPrefixSumMatrix(matrix);
38 for(int i = l1; i <= l2; i++){
39 // r1 to r2 sum for row i
40 if(r1 >= 1)
41 sum += matrix[i][r2] - matrix[i][r1-1];
42 else
43 sum += matrix[i][r2];
44 }
45 return sum;
46 }
47
48 //both row-wise and column-wise prefix sum - Best Approach
49 static int findSum3(int[][] matrix, int l1, int r1, int l2, int r2) {
50 int ans = 0, sum = 0, up = 0, left = 0, leftUp = 0;
51 findPrefixSumMatrix(matrix);
52
53 sum = matrix[l2][r2];
54 if(r1 >= 1) {
55 left = matrix[l2][r1 - 1];
56 }
57 if(l1 >= 1) {
58 up = matrix[l1 - 1][r2];
59 }
60 if(l1 >=1 && r1 >= 1) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected