LeetCode - 566. Reshape the Matrix 重塑矩阵 简单题
题目
直接填充
这个方法很简单,遍历 nums
中的元素,一个一个填充到新数组即可。
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
if (nums.length == 0 || nums[0].length == 0)
return nums;
int n = nums.length;
int m = nums[0].length;
if (n * m != r * c) return nums;
int[][] res = new int[r][c];
int p = 0, q = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res[p][q] = nums[i][j];
if (++q == c) {
++p;
q = 0;
}
}
}
return res;
}
}
坐标对应
这个是考虑一重循环,找坐标的对应的关系,在矩阵中,一维遍历的 nums[i]
在二维中横坐标为 i/c
,纵坐标为 i % c
,所以可以用一个一重循环遍历。
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
if (nums.length == 0 || nums[0].length == 0)
return nums;
int n = nums.length;
int m = nums[0].length;
if (n * m != r * c)
return nums;
int[][] res = new int[r][c];
for (int i = 0; i < n * m; i++)
res[i / c][i % c] = nums[i / m][i % m];
return res;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论