Problem
n * n
행렬을 90 도 회전하는 문제입니다.
새로운 배열을 사용하지 말고 in-place 로 풀어야 합니다.
Solution
위 아래 배열을 먼저 뒤집고 대각선 숫자들을 뒤집으면 됩니다.
Java Code
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
// reverse up and down
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - i - 1][j];
matrix[n - i - 1][j] = temp;
}
}
// reverse diagonally
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Medium] Find the Duplicate Number (Java) (0) | 2021.01.02 |
---|---|
[LeetCode Medium] Group Anagrams (Java) (0) | 2021.01.01 |
[LeetCode Medium] Product of Array Except Self (Java) (0) | 2020.12.31 |
[LeetCode Medium] Kth Smallest Element in a BST (Java) (0) | 2020.12.31 |
[LeetCode Medium] Find First and Last Position of Element in Sorted Array (Java) (0) | 2020.12.31 |