Java 二维数组重组
2017-06-22 17:05
190 查看
In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with 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:
Example 2:
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) {
}
}
解决方法:
public int[][] matrixReshape(int[][] nums, int r, int c) {
int n = nums.length, m = nums[0].length;
if (r*c != n*m) return nums;
int[][] res = new int[r][c];
for (int i=0;i<r*c;i++)
res[i/c][i%c] = nums[i/m][i%m];
return res;
}
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.
public class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
}
}
解决方法:
public int[][] matrixReshape(int[][] nums, int r, int c) {
int n = nums.length, m = nums[0].length;
if (r*c != n*m) return nums;
int[][] res = new int[r][c];
for (int i=0;i<r*c;i++)
res[i/c][i%c] = nums[i/m][i%m];
return res;
}
相关文章推荐
- java与c#中二维数组的区别
- java中使用非对齐二维数组方法
- 关于Java中的二维数组
- Java定义二维数组的几种方法
- C#和Java中二维数组的区别
- Java二维数组实现简单Map(梁健-原创)
- java中将二维数组用一维数组实现的实例
- [Java]二维数组
- 《重构》 — Java示例:影片出租店程序(3、重构——分解并重组Statement)
- JAVA二维数组的堆栈问题
- JAVA中一维数组和二维数组的定义
- 数组、二维数组、及类型,存储过程调用.相关java
- java 字符串 五重复 数据重组
- java中两个一维数组怎么能合成一个二维数组!!!请大哥门指点!!!
- java二维数组问题
- C#和Java中二维数组的区别
- java 一维和二维数组的拷贝问题
- Java数组 一维数组,二维数组
- Java中的一维数组和二维数组
- java 定义二维数组的多种方式