【发布时间】:2022-09-25 23:59:34
【问题描述】:
我正在研究一个 HackerRank 问题,但我不明白其中的一些逻辑:
if (i == j):
left += a[i][j]
上面是说如果行/列索引相同([1,1],[2,2],[3,3]),将在这些坐标处找到的值附加到列表 \'left\'
我不明白下面代码中的逻辑。对我来说,它看起来像是在行索引 + 列索引 = 3 (n-1) 的坐标处找到附加值,但我不认为这是正确的。下面的代码会翻译成什么?
if (i + j) == (n - 1):
right += a[i][j]
下面是带有样本输入 a 和 n 的函数。
a = [[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 9 ]]
n = 4
def xsum(a, n):
left = 0
right = 0
for i in range(0, n):
for j in range(0, n):
if (i == j):
left += a[i][j]
if (i + j) == (n - 1):
right += a[i][j]
return (abs(left-right))
-
原来的问题是什么?
-
@BrokenBenchmark \“将矩阵的两个对角线之和之间的绝对差返回为单个整数。\”所以左右对角线和之间的绝对差。第一行逻辑从左对角线获取值,但我不明白如何遍历右对角线。