566. 重塑矩阵

先把代码贴上来。

class Solution {
public:
    vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
        if (nums.size()*nums[0].size() != r*c) {
            return nums;
        }
        vector<vector<int> > num(r);
        int rl=0, cl=0;
        for (int i = 0; i < nums.size(); ++i) {
            for (int j = 0; j < nums[0].size(); ++j) {
                if (cl < c) {
                    num[rl].push_back(nums[i][j]);
                    cl++;
                } else {
                    cl = 0;rl++;
                    num[rl].push_back(nums[i][j]);
                    cl++;
                }
            }
        }

        return num;
    }
};

思路很朴素,首先判断能不能转换,不能转换的话,就直接结束了。
能转换的话就是首先申请一个r维向量。开始还有些想当然,没申请就用,然后测试的时候就越界了。
我还申请了两个 int 变量去记录当前转换到哪一行哪一列了。接下来就一路遍历挨个转换。
很开心,用时击败了 95.43% 的 C++ 提交。只不过,开始的时候,我感觉我可以写出中等题,后来放弃了,我还是先简单题吧。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 弱水三千,云延千里 清秋风起,叶疏林密 言说天有惊鸿,思绪悠远 话罢苍穹无云,何故蹁跹 只道是轮回天锁,因果自有定...
    孜迹阅读 202评论 0 1
  • 每当夜晚肚子饿的时候就会不停地翻看美食教程,一边翻一边吞口水,一直把自己虐到软弱无力,就爬上床睡觉。这行为...
    秦才人阅读 132评论 0 0