leetcode題解之566
阿新 • • 發佈:2018-11-06
566.重塑矩陣
在MATLAB中,有一個非常有用的函式 reshape,它可以將一個矩陣重塑為另一個大小不同的新矩陣,但保留其原始資料。
給出一個由二維陣列表示的矩陣,以及兩個正整數r和c,分別表示想要的重構的矩陣的行數和列數。
重構後的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。
如果具有給定引數的reshape操作是可行且合理的,則輸出新的重塑矩陣;否則,輸出原始矩陣。
思路:簡單題,需要注意以下R,C值的合理性
程式碼:
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
if(nums == null || nums.length == 0){
return nums;
}
if(r * c != nums.length * nums[0].length){
return nums;
}
int[][] newNums = new int[r][c];
int m = 0;
int n = 0;
for(int i = 0 ;i < nums.length; i++){
for(int j = 0; j < nums[i].length; j++){
if(n ==c){
m++;
n = 0;
}
newNums[m][n++] = nums[i][j];
}
}
return newNums;
}
}