zoukankan      html  css  js  c++  java
  • LeetCode

    1. 题目大意

    根据给定矩阵,重塑一个矩阵,r是所求矩阵的行数,c是所求矩阵的列数。如果给定矩阵和所求矩阵的数据个数不一样,那么返回原矩阵。否则,重塑矩阵。其中两个矩阵中的数据顺序不变(先行后列)。

    2. 思路

    由于矩阵中数据顺序不变,因此我们考虑按顺序做。原矩阵中的第i行第j列(从0开始)的数据可以记为第k个数,其中k=i*(原矩阵中的列数)+j。对应的是新产生的矩阵中的第k/c行,k%c列的元素。一一赋值。这题的关键是要小心数组的边界,正确找到对应的位置。

    3. 代码

    class Solution {
    public:
        vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
            int total = r*c, originr = nums.size(), originc = nums[0].size();
            if(total != (originr*originc)) return nums;
            vector<vector <int> > res(r ,vector<int>(c));
            for(int k = 0; k < total; k++) res[k / c][k % c] = nums[k / originc][k % originc];
            return res; 
        }
    };
    

      

  • 相关阅读:
    学习进度16
    个人总结
    人月神话阅读笔记09
    人月神话阅读笔记08
    人月神话阅读笔记07
    构建之法阅读笔记06
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之阅读笔记03
    Python安装 pip 和 easy_install
  • 原文地址:https://www.cnblogs.com/rgvb178/p/7433660.html
Copyright © 2011-2022 走看看