我正在尝试一些HackerRank挑战来消磨时间,并且遇到了一个简单的练习,需要计算方阵对角线之和之间的绝对差值。我真的相信这是一个简单的练习,应该花很少的时间来完成,但是由于某些原因,我的算法似乎无法正常工作,因为我一直在为输出获取随机值。
这是我的代码:
int diagonalDifference(vector<vector<int>> arr) {
int d1, d2, i = 0;
int size = arr.size();
for (i ; i < size ; i++){
d1 += arr[i][i];
d2 += arr[(size - 1) - i][i];
}
return abs(d1 - d2);}
我的算法简单明了,它在同一for循环中计算两个对角线,仅对矩阵具有的行/列进行迭代/重复(因为它是一个正方形矩阵)。
链接到练习:https://www.hackerrank.com/challenges/diagonal-difference/problem
*请注意,它是C ++语言。
答案 0 :(得分:1)
您正在使用d1
,并且d2
在循环中未初始化,这会调用未定义的行为。您需要像这样初始化它们:
int d1 = 0, d2 = 0, i = 0;
请注意,如果您打开尽可能多的警告,则编译器会警告您这些错误。