-
Notifications
You must be signed in to change notification settings - Fork 0
/
Reshape the Matrix
61 lines (60 loc) · 2.5 KB
/
Reshape the Matrix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* Programmer : Dhruv Patel
* Problem Name : Reshape the Matrix
* Used In : Leetcode
* Used As : Challange
* Problem =>
* In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with a different size 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 need 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.
*/
import java.util.*;
class Reshape_The_Matrix {
public int[][] matrixReshape(int[][] nums, int r, int c) {
int len = nums.length;
int ans[][] = new int[r][c];
List<Integer> l1 = new ArrayList<>();
for(int i=0;i<len;i++) {
for(int j=0;j<nums[i].length;j++) {
l1.add(nums[i][j]);
}
}
int index=0;
for(int m=0;m<r;m++){
for(int k=0;k<c;k++){
if(l1.size()>0){
ans[m][k]=l1.remove(index);
}else{
if(((r-m)>1 | (c-k)>1)){
return nums;
}
break;
}
}
}
return ans;
}
public static void main(String args[]) {
int nums[][] = {{1,2},{3,4}};
int r = 1;
int c = 4;
System.out.println(matrixReshape(nums,r,c));
}
}