MCPcopy Create free account
hub / github.com/Tiwarishashwat/InterviewCodes / Solution

Class Solution

MagicSquaresInGrid.java:1–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1class Solution {
2 public int findRowSum(int grid[][], int r, int c){
3 boolean visited[] = new boolean[10];
4 int sum=0;
5 for(int i=0;i<3;i++){
6 int rowSum=0;
7 for(int j=0;j<3;j++){
8 int val = grid[r+i][c+j];
9 if(val==0 || val>=10 || visited[val]){
10 return -1;
11 }
12 visited[val] = true;
13 rowSum+=val;
14 }
15 if(i==0){
16 sum = rowSum;
17 }else{
18 if(sum!=rowSum){
19 return -1;
20 }
21 }
22 }
23 return sum;
24 }
25
26 public int findColSum(int grid[][], int r, int c){
27 int sum=0;
28 for(int j=0;j<3;j++){
29 int colSum=0;
30 for(int i=0;i<3;i++){
31 int val = grid[r+i][c+j];
32 colSum+=val;
33 }
34 if(j==0){
35 sum = colSum;
36 }else{
37 if(sum!=colSum){
38 return -1;
39 }
40 }
41 }
42 return sum;
43 }
44
45 public int diagonalSum(int grid[][], int r, int c){
46 int sum1 = grid[r][c] + grid[r+1][c+1] + grid[r+2][c+2];
47 int sum2 = grid[r][c+2] + grid[r+1][c+1] + grid[r+2][c];
48 if(sum1==sum2){
49 return sum1;
50 }
51 return -1;
52 }
53 public boolean isMagicSquare(int grid[][], int r, int c){
54 int rowSum = findRowSum(grid,r,c); //3*3
55 if(rowSum==-1) return false;
56 int colSum = findColSum(grid,r,c);//3*3
57 if(colSum==-1) return false;
58 int diagonalSum = diagonalSum(grid,r,c); //const
59 if(diagonalSum==-1) return false;
60 if(rowSum==colSum && rowSum==diagonalSum){

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected