566. 重塑矩阵

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

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

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

  示例 1:

    

    输入:mat = [[1,2],[3,4]], r = 1, c = 4
    输出:[[1,2,3,4]]
  示例 2:

    

    输入:mat = [[1,2],[3,4]], r = 2, c = 4
    输出:[[1,2],[3,4]]

==================================================================

思路比较见到,给出的r其实就是二维数组中的一维数组的个数,c就是一维数组中的元素的个数

上代码:

复制代码
class Solution {
public:
    vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
        if ((mat.size())*(mat[0].size()) != r * c)
            return mat;

        vector<vector<int>> v;    //记录新的数组
        int j = 0;                //记录读到原始的二维数组中第几个一维数组了
        int num = 0;            //记录在二维数组中的一维数组中的具体的位置
        int number = 0;            //新的二维数组中有几个一维数组
        while (number < r) {
            vector<int> a;
            for (int i = 0; i < c; i++, num++) {
                if (mat[j].size() > num)
                    a.push_back(mat[j][num]);
                else {
                    num = 0;
                    j++;
                    a.push_back(mat[j][num]);
                }
            }
            v.push_back(a);
            number++;
        }
        return v;
    }
};
复制代码

 

posted on   4小旧  阅读(31)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示