12、转置矩阵

2018-11-07  本文已影响22人  ZeroForSpider
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);
        }
    }
}

4、运行结果如下:

image.png
上一篇下一篇

猜你喜欢

热点阅读