方阵的对角差分
Diagonal Difference of a Square Matrix
我正在尝试一些 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 循环中计算两条对角线,只有 iterates/repeats 矩阵具有的 rows/columns 数量(因为它是方矩阵)。
Link练习:https://www.hackerrank.com/challenges/diagonal-difference/problem
*请注意,它是在 C++ 中。
您正在使用循环中未初始化的 d1
和 d2
,这会调用未定义的行为。您需要像这样初始化它们:
int d1 = 0, d2 = 0, i = 0;
请注意,如果您打开尽可能多的警告,编译器将警告您这些类型的错误。
我正在尝试一些 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 循环中计算两条对角线,只有 iterates/repeats 矩阵具有的 rows/columns 数量(因为它是方矩阵)。
Link练习:https://www.hackerrank.com/challenges/diagonal-difference/problem
*请注意,它是在 C++ 中。
您正在使用循环中未初始化的 d1
和 d2
,这会调用未定义的行为。您需要像这样初始化它们:
int d1 = 0, d2 = 0, i = 0;
请注意,如果您打开尽可能多的警告,编译器将警告您这些类型的错误。