2014-01-26 54 views
12

我有一個需要2D數組的函數。我想知道是否無論如何獲得二維數組的行和列,而不必迭代它。方法簽名不得改變。獲取二維數組的行數和列數而不迭代它

功能在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。所以我想這是行數,它給出了一維數組中包含數組的引用的含義數。那麼有沒有辦法讓計數沒有迭代?

回答

48

如果它保證每一行都有相同的長度,只需使用:

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

(在數學這當然是有保證的,但它在大多數語言完全有可能的陣列,其中的數組內部陣列是而不是都是相同的長度)。

+0

似乎有保證,因爲旋轉矩陣是平方矩陣。 –

+0

@ZouZou OP似乎濫用術語「旋轉」來指代操縱矩陣本身,而不是形成旋轉矩陣。 – Alnitak

+0

是的,它仍然是一樣的。該程序實際上是將矩陣旋轉90度。我想我可以使用int [] [] rotatedMatrix = new int [matrix.length] [matrix [0] .length];'Tx! –

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

大部分在數組中,所有的行都有相同的長度。所以上面的解決方案几乎每次都能工作。