转置阵列(CS 101)

时间:2014-05-02 06:40:29

标签: java arrays

根据这些说明,我试图将数组从4x2转换为2x4"

"给定一个二维数组arr1的int,返回一个二维数组arr2,即arr1的转置。 转置就是将数组的行放入列中。也就是说,arr1 [n] [m] = ARR2 [M] [N]&#34。

我提出的解决方案如下:

public int[][] transpose(int[][] arr1){
    int[][] arr2;

    arr2 = new int [arr1[0].length][arr1.length];
    for(int i = 0; i<arr1.length; i++){
        for(int j = 0; j < arr1[0].length; j++){
            arr2[j][i] = arr1[i][j];
        }
    }
}

我不确定我是否完全理解数组表示法,当代码引用arr1[0]arr1来访问行与列时。 arr1[0].length访问第一列的长度,其中arr1.length访问第一行的长度吗?

3 个答案:

答案 0 :(得分:1)

说你有(4x2二维阵列)

int[][] arr1 = {{1,2},
                {3,4},
                {5,6},
                {7,8}
                };

然后每个的值是:

arr1[0].length // 2
arr1.length    // 4

答案 1 :(得分:0)

  

arr1 [0] .length是否访问第一列的长度,其中arr1.length访问第一行的长度?

这完全取决于你如何根据&#34;行&#34;来查看数组。和&#34;列&#34;。

int[][]类型是一个数组数组。该数组的每个元素都是int[],它可以与其他所有元素的大小不同。所以arr1.Length是&#34;嵌套&#34;的数量。数组,arr1[0].Length是第一个嵌套数组的长度。如果您将每个嵌套数组视为一行,则arr1.Length是行数,arr1[0].Length是第一行中的列数 - 您基本上是假设arr1的每个元素具有相同的长度。

答案 2 :(得分:0)

相对

arr1[0] 

代表第一行。这样它就会给出第一行的长度,即列数。