在不迭代二维数组的情况下获取行和列的数量

16

我有一个函数,它接受一个二维数组。我想知道是否有任何方法可以在不迭代它的情况下获取二维数组的行和列。方法签名不能更改。

这个函数是在 ninetyDegRotator 类中。

public static int [][] rotate(int [][] matrix){

    int [][] rotatedMatrix = new int[4][4];//need actual row n col count here
    return rotatedMatrix; //logic

}

主要代码如下:

public static void main(String args[]){

    int [][] matrix = new int[][]{
            {1,2,3,4},
            {5,6,7,8},
            {9,0,1,2},
            {3,4,5,6}
    };

    System.out.println("length is " + matrix.length);
    int [][] rotatedMatrix = ninetyDegRotator.rotate(matrix);
} 

同时matrix.length给了我4。所以我猜它给出的是一维数组中包含数组的引用数量的行数。那么有没有一种方法可以在不迭代的情况下获得计数呢?

2个回答

57

如果保证每一行的长度相同,只需使用:

int rows = matrix.length;
int cols = matrix[0].length;  // assuming rows >= 1

(在数学中,这当然是有保障的,但在大多数语言中,很可能会有一个由数组组成的数组,其中内部数组的长度都相同。)


由于旋转矩阵是方阵,因此似乎是有保证的。 - Alexis C.
@ZouZou,原帖的作者似乎误用了“旋转”一词,将其用于操作矩阵本身而非形成旋转矩阵。 - Alnitak
是的,它仍然是一样的。该程序实际上是用于将矩阵旋转90度。我想我可以使用 int [][] rotatedMatrix = new int[matrix.length][matrix[0].length]; 谢谢! - Aniket Thakur

5
int row = mat.length;
int col= mat[0].length;

大多数情况下,数组中的每一行长度都相同。因此,上述解决方案几乎总是有效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接