---
# System prepended metadata

title: '[LeetCode 566. Reshape the Matrix](https://leetcode.com/explore/challenge/card/july-leetcoding-challenge-2021/608/week-1-july-1st-july-7th/3803/)'

---

# [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;
    }
};
```