方法一:

思路:

  1. 如果reshape参数不合理直接返回原理的矩阵
  2. 假设现在reshape之后的矩阵的元素是第index个(从0开始),那么在原矩阵的第index/len(mat[0])行(从0开始),在原矩阵的第index%len(mat[0])列(从0开始)

    1. func matrixReshape(mat [][]int, r int, c int) [][]int {
    2. //如果行为0 或者 列为0 或者 参数不合理 直接返回原来的矩阵
    3. if len(mat) == 0 || len(mat[0]) == 0 || len(mat) * len(mat[0]) != r * c {
    4. return mat
    5. }
    6. //初始化结果矩阵
    7. ret := make([][]int, r)
    8. for i := 0; i < r; i++ {
    9. ret[i] = make([]int, c)
    10. }
    11. index := 0
    12. //处理
    13. for i := 0; i < r; i++ {
    14. for j := 0; j < c; j++ {
    15. index = i*c + j
    16. //现在是第i*c + j个元素
    17. ret[i][j] = mat[index/len(mat[0])][index%len(mat[0])]
    18. }
    19. }
    20. //返回结果
    21. return ret
    22. }