我是hackerrank的新手来解决这个算法问题Diagonal difference,我提出了解决方案,但它显示了运行时错误,任何人都可以告诉我写的哪个部分是错误的,谢谢。
/*
* Complete the diagonalDifference function below.
*/
static int diagonalDifference(int[][] a) {
/*
* Write your code here.
*/
int sum1=0;
int sum2=0;
int n = a[0].length;
for(int i=0; i<n; i++){
sum1 += a[i][i];
sum2 += a[n-i][i];
}
return Math.abs(sum1-sum2);
}
答案 0 :(得分:0)
问题在于这一行:sum2 += a[n-i][i];
对于i=0
,它将是a[n][0]
,索引位于0 to n-1
之间;因此会导致运行时错误。
答案 1 :(得分:0)
你的问题的答案,
moves
在这里i = 0;所以你试图访问一个不在数组中的索引。它应该是sum2 += a[n-i][i];
以下是我在java 8中的表现。您将能够理解它并且与java 7非常相似。
sum2 += a[n-i-1][i]
答案 2 :(得分:0)
将sum2 + = a [n-i] [i]替换为sum2 + = a [n-i-1] [i]。它将解决您的问题。
有关详细说明,您可以查看以下链接-
有很多站点和git hub存储库,您可以在其中找到针对大多数问题的hackerRank解决方案。
但是我建议您使用https://github.com/Java-aid/Hack...。在这里,我可能会有偏见,但请相信我,您会发现此存储库很有用。
在此存储库中,我还将添加视频教程,您将无法在Internet上的任何git-hub存储库中找到该视频教程。
这是示例教程-https://youtu.be/gDltV7pJw7A
它将教您解决hackerrank楼梯问题的惊人方法。请观看完整的教程,以了解解决此问题的棘手方法。
在这里,我的目标不仅是提供解决方案,而且是解决问题的技能。建议您阅读视频教程,这将提高您的逻辑能力。
如果您喜欢我的作品,请不要忘记与他人分享您的反馈。 :)