Reshape the Matrix - Array - Easy - LeetCode
💻 coding

Reshape the Matrix - Array - Easy - LeetCode

1 min read 259 words
1 min read
ShareWhatsAppPost on X
  • 1The 'reshape' function in MATLAB allows for changing a matrix's dimensions while preserving its data.
  • 2The reshaped matrix must maintain the original row-traversing order of elements from the input matrix.
  • 3If the reshape operation is not possible, the original matrix is returned unchanged.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The 'reshape' function in MATLAB allows for changing a matrix's dimensions while preserving its data."

Reshape the Matrix - Array - Easy - LeetCode

In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with a different sizes but keep its original data.

You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing the row number and column number of the wanted reshaped matrix, respectively.

The reshaped matrix needs to 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: Input: nums = [[1,2], [3,4]] r = 1, c = 4 Output: [[1,2,3,4]] Explanation: The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list. Example 2: Input: nums = [[1,2], [3,4]] r = 2, c = 4 Output: [[1,2], [3,4]] Explanation: There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix. Note: The height and width of the given matrix is in range [1, 100]. The given r and c are all positive.

public class Solution {
 public int[][] MatrixReshape(int[][] nums, int r, int c) {
 int m = nums.Length;
 int n = nums[0].Length;
 
 if(m*n != r*c){
 return nums;
 }
 
 var res = new int[r][];
 for(int i=0;i<r;i++){
 res[i] = new int[c];
 }
 
 for(int i=0;i<r*c;i++){
 res[i/c][i%c] = nums[i/n][i%n];
 }
 return res;
 }
}

Time Complexity: O(r*c)

Space Complexity: O(r*c)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 26 September 2020 · 1 min read · 259 words

Part of AskGif Blog · coding

You might also like