【Leetcode 566】【Easy】重塑矩阵

目录

题目描述

整体思路

具体代码


题目描述:
 

原题链接

整体思路

首先要确保重塑后的矩阵内元素个数和原矩阵元素个数要相同,如果不同则原样返回原矩阵。

按行遍历顺序遍历原矩阵,设一个临时vector<int>存放新矩阵的每一行的元素,一边遍历一边判断临时vector的元素个数是否等于新矩阵每一行的元素个数,若相等,则说明新矩阵一行已完成,要读下一行,把临时vector元素清空同时新矩阵行数r要-1。若不相等,说明新矩阵的一行的元素还没读完,要继续往临时vector添加原矩阵元素。重复上述步骤知道新矩阵行数r=0。

具体代码

class Solution {
public:
    vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
        if(r*c!=mat.size()*mat[0].size()) return mat;
        vector<vector<int>> v;
        vector<int> v2;
        for(int i=0;i<=mat.size()-1;i++){
            for(int j=0;j<=mat[0].size()-1;j++){
                if(r==0) break;
                if(v2.size()==c){
                    v.push_back(v2);
                    v2=vector<int>();//清空临时矩阵
                    v2.push_back(mat[i][j]);//别忘了要往临时矩阵添加本次遍历到的原矩阵元素,弄,否则会漏
                    r--;
                }else{
                    v2.push_back(mat[i][j]);
                }
            }
        }
        if(v2.size()==c){//特殊情况是r=0但是临时vector还未存入新矩阵,特殊处理
            v.push_back(v2);
        }
        return v;
    }
};

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值