문제는 '정렬을 시계방향으로 90도 회전하라' 입니다
첫번째.
class Solution {
public void rotate(int[][] matrix) {
int swap = 0;
int size = matrix.length;
int[][] swapMartix = deepCopy(matrix, matrix.length);
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
matrix[j][size - 1 - i] = swapMartix[i][j];
}
}
}
public static int[][] deepCopy(int[][] original, int n) {
if (original == null) {
return null;
}
int[][] result = new int[n][n];
for (int i = 0; i < original.length; i++) {
System.arraycopy(original[i], 0, result[i], 0, original[i].length);
}
return result;
}
}
아이디어는 '2차원 배열을 deepcopy해서 다시 덮어쓰자' 입니다.
이 아이디어의 구현을 위해 Array.clone()를 사용하여 Deep Copy(깊은복사)를 했습니다.
깊은 복사와 얕은 복사에 대해 이전 글에서 설명한 것이 있으니 확인해보세요.
2020/08/11 - [코딩테스트/Leet Code] - [LeetCode] 자바 581. Shortest Unsorted Continuous Subarray
두번째.
하지만 문제를 보니 조건중에 다른 2차원 배열을 할당하지 말고 해결하라는 추가 조건이 있어 다른 아이디어가 생각나면 추가하겠습니다.
'코딩테스트 > Leet Code' 카테고리의 다른 글
[LeetCode] 392. Is Subsequence - 자바스크립트 (0) | 2021.04.10 |
---|---|
[LeetCode] 121. Best Time to Buy and Sell Stock - 자바스크립트 (0) | 2021.04.09 |
[LeetCode] 자바 581. Shortest Unsorted Continuous Subarray (0) | 2020.08.11 |
[LeetCode] 자바, 20. Valid Parentheses (0) | 2020.08.10 |
[LeetCode] 자바 53. Maximum Subarray (0) | 2020.08.10 |
댓글