Skip to content

Commit

Permalink
level2 Matrix Rotation clear~
Browse files Browse the repository at this point in the history
  • Loading branch information
prolkh committed May 26, 2021
1 parent fb4d06a commit c0780a7
Showing 1 changed file with 31 additions and 12 deletions.
43 changes: 31 additions & 12 deletions level2/MatrixCrustRotation.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,13 @@

class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = {};

int[][] initArray = new int[rows][columns];
int[] answer = new int[queries.length];
int[][] matrix = new int[rows][columns];
int initNum = 1;

for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++){
initArray[i][j] = initNum++;
for(int j=0; j<columns; j++) {
matrix[i][j] = initNum++;
}
}

Expand All @@ -64,15 +63,35 @@ public int[] solution(int rows, int columns, int[][] queries) {
int y1 = queries[i][1]-1;
int y2 = queries[i][3]-1;

// System.out.println(initArray[x1][y1]);
// System.out.println(initArray[x1][y2]);
// System.out.println(initArray[x2][y1]);
// System.out.println(initArray[x2][y2]);

System.out.println((x2-x1+y2-y1) * 2);

int row = x1;
int col = y1;
int minNum = rows * columns;
int preNum = matrix[row][col];

while(true) {
minNum = minNum > preNum ? preNum : minNum;

if(row == x1 && col != y2) {
col++;
} else if(row != x2 && col == y2) {
row++;
} else if(row == x2 && col != y1) {
col--;
} else if(row != x1 && col == y1) {
row--;
}

matrix[row][col] = matrix[row][col] ^ preNum;
preNum = preNum ^ matrix[row][col];
matrix[row][col] = matrix[row][col] ^ preNum;

if(row == x1 && col == y1) break;
};

answer[i] = minNum;
}

return answer;
}
}

0 comments on commit c0780a7

Please sign in to comment.