joshua-aragon-EaB4Ml7C7fE-unsplash.jpg
简单在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reshape-the-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  1. /**
  2. * @param {number[][]} mat
  3. * @param {number} r
  4. * @param {number} c
  5. * @return {number[][]}
  6. */
  7. var matrixReshape = function (mat, r, c) {
  8. const row = mat[0].length;
  9. const col = mat.length;
  10. if (row * col !== r * c) {
  11. return mat;
  12. }
  13. const t = [];
  14. for (let i = 0; i < col; i++) {
  15. t.push(...mat[i]);
  16. }
  17. const ans = [];
  18. const f = [];
  19. for (let i = 0; i < t.length; i++) {
  20. f.push(t[i]);
  21. if ((i + 1) % c === 0) {
  22. ans.push(f.splice(0, c));
  23. }
  24. }
  25. return ans;
  26. };

思路

直接将原数组mat展开为一维数组t,之后遍历t得到答案数组ans。