1、题目如下:
给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
示例 2:
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
提示:
1 <= A.length <= 1000
1 <= A[0].length <= 1000
2、解题思路
本题目较为简单,只需要将原矩阵的行列大小及元素交换即可。所以在写代码的时候可以定义一个原矩阵的列长度的行,原矩阵的行长度的列大小的矩阵,再交换行列顺序交换元素即可。
3、代码如下:
class Solution {
public int[][] transpose(int[][] A) {
int row=A.length,col=A[0].length;
int [][] B=new int[col][row];
for(int i=0;i<col;i++){
for(int j=0;j<row;j++){
B[i][j]=A[j][i];
}
}
return B;
}
}
public class MainClass {
public static int[] stringToIntegerArray(String input) {
input = input.trim();
input = input.substring(1, input.length() - 1);
if (input.length() == 0) {
return new int[0];
}
String[] parts = input.split(",");
int[] output = new int[parts.length];
for(int index = 0; index < parts.length; index++) {
String part = parts[index].trim();
output[index] = Integer.parseInt(part);
}
return output;
}
public static int[][] stringToInt2dArray(String input) {
JsonArray jsonArray = JsonArray.readFrom(input);
if (jsonArray.size() == 0) {
return new int[0][0];
}
int[][] arr = new int[jsonArray.size()][];
for (int i = 0; i < arr.length; i++) {
JsonArray cols = jsonArray.get(i).asArray();
arr[i] = stringToIntegerArray(cols.toString());
}
return arr;
}
public static String int2dArrayToString(int[][] array) {
if (array == null) {
return "null";
}
if (array.length == 0) {
return "[]";
}
StringBuilder sb = new StringBuilder("[");
for (int[] item : array) {
sb.append(Integer.toString(item));
sb.append(",");
}
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
int[][] A = stringToInt2dArray(line);
int[][] ret = new Solution().transpose(A);
String out = int2dArrayToString(ret);
System.out.print(out);
}
}
}
网友评论