链接
566.重塑数组
题目描述
思路
- 榆木脑袋第一时间只想出这种本方法。
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
int i, j, l=0,ll=0;
int hang= nums.length;
int lie=nums[0].length;
int[] n=new int[hang*lie];
int[][] new_nums=new int[r][c];
for (i=0;i< hang;i++){
for (j=0;j<lie;j++){
n[l]=nums[i][j];
l++;
}
}
if (r*c>n.length)
return nums;
for (i=0;i<r;i++){
for (j=0;j<c&&ll<n.length;j++){
new_nums[i][j]=n[ll];
ll++;
}
}
return new_nums;
}
}
改进
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
int i, j,ll=0;
int hang= nums.length;
int lie=nums[0].length;
int[][] new_nums=new int[r][c];
if (r*c!=hang*lie)
return nums;
for (i=0;i<r;i++){
for (j=0;j<c;j++){
new_nums[i][j]=nums[ll / lie][ll % lie]; //不需要把原数组变成一位数组了,多此一举= =
ll++;
}
}
return new_nums;
}
}