方阵的对角差分

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++ 中。

您正在使用循环中未初始化的 d1d2,这会调用未定义的行为。您需要像这样初始化它们:

int d1 = 0, d2 = 0, i = 0;

请注意,如果您打开尽可能多的警告,编译器将警告您这些类型的错误。