# [LeetCode 566. Reshape the Matrix](https://leetcode.com/explore/challenge/card/july-leetcoding-challenge-2021/608/week-1-july-1st-july-7th/3803/) ### Daily challenge Jul 5, 2021 (EASY) >In MATLAB, there is a handy function called **`reshape`** which can reshape an **`m x n`** matrix into a new one with a different size **`r x c`** keeping its original data. > >You are given an m x n matrix mat and two integers r and c representing the number of rows and the number of columns of the wanted reshaped matrix. > >The reshaped matrix should be filled with all the elements of the original matrix in the same row-traversing order as they were. > >If the reshape operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix. ![](https://i.imgur.com/qQjWcDU.png) :::info **Example 1:** **Input:** mat = [[1,2],[3,4]], r = 1, c = 4 **Output:** [[1,2,3,4]] ::: ![](https://i.imgur.com/NTe1C20.png) :::info **Example 2:** **Input:** mat = [[1,2],[3,4]], r = 2, c = 4 **Output:** [[1,2],[3,4]] ::: :::warning **Constraints:** * m == mat.length * n == mat[i].length * 1 <= m, n <= 100 * -1000 <= mat[i][j] <= 1000 * 1 <= r, c <= 300 ::: --- ### Approach 1 : **`4 ms ( 99.41% )`** **`O()`** If **`m * n != r * c`**, the reshape operation is illegal. ---> return original matrix. Otherwise, store how many elements we have used in **`count`**, and **`ans[i][j] = mat[count/n][count%n]`**. ```cpp=1 class Solution { public: vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) { int m = mat.size(); int n = mat[0].size(); if(m * n != r * c) return mat; int count = 0; vector<vector<int> > ans(r, vector(c, 0)); for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ ans[i][j] = mat[count/n][count%n]; count++; } } return ans; } }; ```