我在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算术中的溢出等)。
在这里您似乎没有任何算术问题,但是重新阅读问题并检查假设(输入格式可能是?)总是值得的。