0
我需要使用Java交換二維數組的行和列。我有一個ArrayList
,告訴我某個行和列需要去哪裏。例如:交換2D陣列的行和列
ArrayList<Integer> = [2, 0, 1, 3]
0 1 2 3 (indexes for illustration)
上面意味着行0和列0的需要,成爲第2行和第2欄,第1行和第1列需要成爲行0和列0,依此類推。
例如:
int[][] example = {
{0, 3, 3, 4},
{0, 1, 0, 0},
{0, 0, 1, 0},
{8, 1, 1, 0}
};
比方說,我們第一次換行,因此 「中間」 的形式是:
// From the list, change rows as follows:
// 0->2, 1->0, 1->2, 3->3
int[][] example = {
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 3, 3, 4},
{8, 1, 1, 0}
};
最後,交換列,我們得到所需的輸出:
// From the list, change columns as follows:
// 0->2, 1->0, 1->2, 3->3
int[][] example = {
{1, 0, 0, 0},
{0, 1, 0, 0},
{3, 3, 0, 4},
{1, 1, 8, 0}
};
請注意,交換可能在位或在一個新的矩陣中,無所謂。 我被困在需要交換列的部分,我不太確定如何在這裏繼續。 這是我到目前爲止已經試過:
public static int[][] makeStandardForm(int[][] m){
//generate list of index swaps
List<Integer> l = new ArrayList<Integer>(orderIndexes(m));
int[][] m1 = new int[m.length][m.length];
//Swap rows, working fine
for(int i=0; i < m.length; i++){
m1[i] = m[(int)l.get(i)];
}
//Swap columns, stuck here?
for(int i=0; i < m.length; i++){
//don't know how to swap columns
}
return m1;
}
這是一個正方形,又名'n'x'n'陣列? –
@AyushGupta一直是方陣,最大10x10 – alejandrogiron