方矩阵的对角线差

时间:2020-05-22 15:39:51

标签: c++ arrays matrix diagonal

我正在尝试一些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 ++语言。

1 个答案:

答案 0 :(得分:1)

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

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

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