566. 매트릭스 재구성
MATLAB reshape
에는 행렬을 크기가 다른 새로운 행렬로 변형 할 수 있지만 원래 데이터를 유지할 수 있는 매우 유용한 함수 가 있습니다.
매트릭스 표시는 2 차원 어레이, 2 명 개의 양의 정수에 의해 부여 r
하고 c
, 각 행렬의 열 번호를 요구하고 복원 된 행의 수를 나타낸다.
재구성 된 행렬은 동일한 행 순회 순서로 원래 행렬의 모든 요소를 채워야합니다.
reshape
연산 의 주어진 매개 변수 가 실행 가능하고 합리적이면 새로운 출력 행렬 리모델링이고, 그렇지 않으면 원래 행렬의 출력입니다.
예 1 :
输入:
nums =
[[1,2],
[3,4]]
r = 1, c = 4
输出:
[[1,2,3,4]]
解释:
行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。
예 2 :
输入:
nums =
[[1,2],
[3,4]]
r = 2, c = 4
输出:
[[1,2],
[3,4]]
解释:
没有办法将 2 * 2 矩阵转化为 2 * 4 矩阵。 所以输出原矩阵。
노트:
- 주어진 행렬의 너비와 높이는 [1, 100] 범위에 있습니다.
- 주어진 r과 c는 모두 양수입니다.
방법 1 :
문제 해결 아이디어
코드에 대한 간단한 질문
참조 코드
public int[][] matrixReshape(int[][] nums, int r, int c) {
int R = nums.length, C = nums[0].length;
if (R * C != r * c || (R == r && C == c)) {
return nums;
}
int[][] ans = new int[r][c];
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
int idx = i * C + j;
ans[idx / c][idx % c] = nums[i][j];
}
}
return ans;
}
의 결과