題目:給一個(gè)二維數(shù)組和兩個(gè)數(shù)字,返回一個(gè)二維數(shù)組新蟆,第一個(gè)數(shù)字代表返回的數(shù)組的行耕姊,第二個(gè)數(shù)字代表列。
思路:剛開(kāi)始想邏輯想不明白栅葡,可能是想循環(huán)一下搞定,但是不行尤泽,只能在循環(huán)外面創(chuàng)建兩個(gè)變量來(lái)控制要返回的數(shù)組的接收欣簇,思路很清晰就是說(shuō)不上來(lái),直接附代碼:
public int[][] matrixReshape(int[][] nums, int r, int c) {
if(nums==null)return null;
if(nums.length*nums[0].length!=r*c)return nums;
int[] tem=new int[nums.length*nums[0].length];
int carry=0;
int hang=0;
int[][] result=new int[r][c];
for(int i=0;i<nums.length;i++){
for(int j=0;j<nums[0].length;j++){
result[hang][carry]=nums[i][j];
if(carry==c-1){
carry=0;
hang++;
continue;
}
carry++;
}
}
return result;
}
看看高手的解題方法:
和我的差不多坯约,就是用了一些取巧的辦法:
public int[][] matrixReshape(int[][] nums, int r, int c) {
int n = nums.length, m = nums[0].length;
if (r*c != n*m) return nums;
int[][] res = new int[r][c];
for (int i=0;i<r*c;i++)
res[i/c][i%c] = nums[i/m][i%m];
return res;
}