对于给定的一个二维矩阵,请转置后进行输出。
输入描述
对于一个n*m的矩阵,输入有n行,每行是m个以空格分隔的数字。
输出描述
n*m矩阵的转置矩阵。输出m行,每行是n个空格分隔的数据。
java
import java.io.*;
import java.util.*;
public class ZhuanZhi {
public static void main(String args[]) {
String input = "1 2 3\r\n" + "4 5 6";
Scanner cin = new Scanner(input);
ArrayList<ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
while (cin.hasNextLine()) {
ArrayList<Integer> row = new ArrayList<Integer>();
String line = cin.nextLine();
if (line.length() > 0) {
String[] arrLine = line.split(" ");
for (int i = 0; i < arrLine.length; i++) {
row.add(Integer.parseInt(arrLine[i]));
}
arr.add(row);
}
}
new Solution().myFunc(arr);
}
}
class Solution {
public void myFunc(ArrayList<ArrayList<Integer>> arr) {
if (!(arr == null || arr.isEmpty() || arr.get(0).isEmpty())) {
ArrayList<Integer> row = new ArrayList<Integer>();
int r = arr.size();
int l = arr.get(0).size();
int[][] nn = new int[l][r];
for (int i = 0; i < r; i++) {
row = arr.get(i);
for (int j = 0; j < row.size(); j++) {
nn[j][i] = (row.get(j));
}
}
for (int i = 0; i < l; i++) {
for (int j = 0; j < r; j++) {
System.out.print(nn[i][j] + " ");
}
System.out.println();
}
}
}
}