我在hackerrank中努力解决一个相当简单的问题。问题要求输入一个方矩阵并打印它的转置。注册竞赛后可以在此处找到问题。问题的名称是“转置矩阵”:
https://www.hackerrank.com/contests/csdp-contest/challenges/

我用Java代码解决此问题的方法如下:

    import java.io.*;
    public class Solution {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String line1[] = br.readLine().split(" ");//Read the first line to find the size of the array
            int n = line1.length;
            int ar[][] = new int[n][n];//initialize an integer array with size n
            int rowNumber = 0;
            for (int i=0;i<n;i++)
                ar[rowNumber][i] = Integer.parseInt(line1[i]);//Store the first line in the array
            rowNumber = 1;
            //Store the next input lines in the array if any
            for (int j=0;j<n-1;j++){
                String line[] = br.readLine().split(" ");
                for(int i=0;i<line.length;i++){
                    ar[rowNumber][i] = Integer.parseInt(line[i]);
                }
                rowNumber++;
            }
            //Print the transpose of the matrix by printing ar[j][i] instead of [i][j]
            for(int i=0;i<rowNumber;i++){
                for (int j=0;j<rowNumber;j++){
                    System.out.print(ar[j][i]+" ");
                }
                System.out.println();
            }
        }
    }


上面的代码通过了给出的问题的测试用例,但是当我提交时它未能通过其中一个测试用例。我不知道我是否缺少任何边缘情况或代码中是否存在错误。您能帮我解决这个问题吗?

最佳答案

我对这个测验不熟悉,但是通常数字类型是一个常见的陷阱(例如int算术中的溢出等)。

在这里您似乎没有任何算术问题,但是重新阅读问题并检查假设(输入格式可能是?)总是值得的。

10-06 13:52