使用 original 数组中的所有元素,去组成一个 m * n 的二维数组。如果组成不了【 m * n != original】,则返回一个 空的二维数组。
难点: 如果将一维数组 original 中的元素,每次复制 n 个元素,到 二维的数组一行里。(m 行 == 复制 m 次)
这里就需要借助数组的拷贝方式。一共有4 种方式,可参考数组的定义与使用文章,你们可以在目标中找: 数组拷贝【位置偏下】
src == source - 源头;dest == destination - 目标;
srcPos == source position - 源头中某个位置;
destPos == destination positon - 目标中某个位置;
length - 长度/元素个数;
System.arraycopy 的功能就是: 把 源头的数组,从 源头中某个位置开始 拷贝,拷贝到 destination 中的 某个位置。拷贝元素个数为 length / 拷贝长度为 length。
class Solution {
public int[][] construct2DArray(int[] original, int m, int n) {
if(original.length != m * n){
return new int[0][];
}
int[][] array = new int[m][n];
for(int i = 0;i < original.length;i+=n){
System.arraycopy(original,i,array[i/n],0,n);
}
return array;
}
}
一个元素一个元素的拷贝
class Solution {
public int[][] construct2DArray(int[] original, int m, int n) {
if(original.length != m * n){
return new int[0][];
}
int[][] array = new int[m][n];
// for(int i = 0;i < original.length;i+=n){
// System.arraycopy(original,i,array[i/n],0,n);
// }
int o = 0;// 用来记录 拷贝到 original数组中第几个元素的下标
for(int i = 0;i < m; i++){
for(int j = 0; j < n; j++){
array[i][j] = original[o];
o++;
}
}
return array;
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/DarkAndGrey/article/details/122268359
内容来源于网络,如有侵权,请联系作者删除!