2015-10-03 147 views
3

我在將矢量分解爲2D矩陣或給定的一側時遇到了問題。例如,給定矢量{1,2,3,4,5,6,7,8,9,10,11,12},行(3)和列(4)可以變成{{1 ,2,3,4},{5,6,7,8},{9,10,11,12}}。從給定的矢量創建矩陣

從現在開始,代碼只是將整個矢量打印到數組中,而不管它們是多少行。

int[][] reshape(int[] vector, int row, int col) { 
     if (!isReshapable(vector.length, row, col)) { 
      return null; 
     } else { 
      int[][] matrix = new int[row][col]; 
      for (int i = 0; i < row; i++) { 
       for (int j = 0; j < col; j++) { 
        Arrays.fill(matrix, vector); 
       } 
      } 
      return matrix; 
     } 
    }  

回答

0

您正在迭代ij。您可以使用它們(以及在vector中的位置),例如,

int p = 0; 
int[][] matrix = new int[row][col]; 
for (int i = 0; i < row; i++) { 
    for (int j = 0; j < col; j++, p++) { 
     matrix[i][j] = vector[p]; 
    } 
}