g0501_0600.s0566_reshape_the_matrix.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0501_0600.s0566_reshape_the_matrix;
// #Easy #Array #Matrix #Simulation #Data_Structure_I_Day_4_Array #Programming_Skills_I_Day_7_Array
// #2022_08_10_Time_1_ms_(90.08%)_Space_51.4_MB_(11.21%)
/**
* 566 - Reshape the Matrix\.
*
* 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.
*
* **Example 1:**
*
* ![](https://assets.leetcode.com/uploads/2021/04/24/reshape1-grid.jpg)
*
* **Input:** mat = \[\[1,2],[3,4]], r = 1, c = 4
*
* **Output:** [[1,2,3,4]]
*
* **Example 2:**
*
* ![](https://assets.leetcode.com/uploads/2021/04/24/reshape2-grid.jpg)
*
* **Input:** mat = \[\[1,2],[3,4]], r = 2, c = 4
*
* **Output:** [[1,2],[3,4]]
*
* **Constraints:**
*
* * `m == mat.length`
* * `n == mat[i].length`
* * `1 <= m, n <= 100`
* * `-1000 <= mat[i][j] <= 1000`
* * `1 <= r, c <= 300`
**/
public class Solution {
public int[][] matrixReshape(int[][] mat, int r, int c) {
if ((mat.length * mat[0].length) != r * c) {
return mat;
}
int p = 0;
int[] flatArr = new int[mat.length * mat[0].length];
for (int[] ints : mat) {
for (int anInt : ints) {
flatArr[p++] = anInt;
}
}
int[][] ansMat = new int[r][c];
int k = 0;
for (int i = 0; i < ansMat.length; i++) {
for (int j = 0; j < ansMat[i].length; j++) {
ansMat[i][j] = flatArr[k++];
}
}
return ansMat;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy