Я новичок в хакерранке, чтобы решить эту проблему алгоритма Диагональная разница, я придумал решение, но оно показывает ошибку времени выполнения, может ли кто-нибудь сказать, какая часть я написал неправильно, спасибо.
/*
* 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);
}
Вы правы, я промахнулся до минус 1, спасибо!




Проблема в этой строке: sum2 += a[n-i][i];
Для i=0 это будет a[n][0], а индекс находится между 0 to n-1; это приведет к ошибке выполнения.
Ответ на ваш вопрос,
sum2 += a[n-i][i]; здесь i = 0; поэтому вы пытаетесь получить доступ к индексу, которого нет в массиве. это должен быть sum2 += a[n-i-1][i]
Вот как я это сделал в java 8. Вы сможете понять это и очень похоже на java 7.
static int diagonalDifference(int[][] a, int n) {
//I just edited this method
int x=0, y=0,z,h=0;
for(int i = 0; i < n; i++){
x = x + a[i][i];
}
for(int j = n-1; j >= 0; j-- ){
y = y + a[h][j];
h++;
}
//System.out.println(x);
//System.out.println(y);
if (x>y){
z=x-y;
}else{
z=y-x;
}
return(z);
}
замените sum2 + = a [n-i] [i] на sum2 + = a [n-i-1] [i]. Это решит вашу проблему.
Для подробного объяснения вы можете проверить приведенную ниже ссылку -
https://thewikihow.com/video_f6bTIsj9ne8
Существует множество сайтов и репозиториев git hub, где вы можете найти решения hackerRank для большинства проблем.
Но я бы порекомендовал https://github.com/Java-aid/Hack ... который поддерживается мной. Здесь я могу быть предвзятым, но поверьте мне, вы найдете этот репозиторий полезным.
В этот репозиторий я также добавляю видеоурок, который вы не найдете ни в одном из репозиториев git-hub в Интернете.
Вот пример учебника - https://thewikihow.com/video_gDltV7pJw7A
который научит вас удивительным подходам к решению проблемы лестницы хакерского ранга. Просмотрите полное руководство, чтобы узнать, как решить эту проблему.
Здесь моя цель - не только найти решение, но и развить навыки решения проблем. Рекомендую вам пройти видеоуроки, которые повысят ваши логические способности.
Не забудьте поделиться своим мнением с другими, если вам нравятся мои работы. :)
При вычислении sum2 вы пытаетесь получить доступ к индексу
> n-1, когдаi=0. Так что измените его наsum2 += a[n-i-1][i];