我正在尝试一些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.comchallengesdiagonal-differenceproblem
*请注意,它是用C++语言编写的。
你正在使用 d1
和 d2
循环中未初始化,这将调用未定义的行为。你需要像这样初始化它们。
int d1 = 0, d2 = 0, i = 0;
请注意,如果你尽可能多地开启警告, 编译器会警告你这些错误。