Open yankewei opened 3 years ago
func matrixReshape(nums [][]int, r int, c int) [][]int {
row, column := len(nums), len(nums[0])
if row * column != r * c {
return nums
}
ret := make([][]int, r)
slice := make([]int, r*c)
index := 0
for _, v := range nums {
for _, vv := range v {
slice[index] = vv
index++
}
}
index = 0
for i := 0; i < r; i++ {
columns := make([]int, c)
for j := 0; j < c;j++ {
columns[j] = slice[index]
index++
}
ret[i] = columns
}
return ret
}
func matrixReshape(nums [][]int, r int, c int) [][]int {
row, column := len(nums), len(nums[0])
if row * column != r * c {
return nums
}
ret := make([][]int, r)
for i := 0; i < r; i++ {
ret[i] = make([]int, c)
}
for i :=0; i < r*c; i++ {
ret[i/c][i%c] = nums[i/column][i%column]
}
return ret
}
在MATLAB中,有一个非常有用的函数
reshape
,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数
r
和c
,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
如果具有给定参数的
reshape
操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:
示例 2:
注意:
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reshape-the-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。