你好,我使用swift在hackerRank上练习,现在我遇到了问题。我的代码在迅速的操场上运行良好,并返回了预期的结果,但是在HackerRank中,我遇到了运行时错误~ no response on stdout ~
,我试图重置代码并刷新页面。可能是什么问题?
func diagonalDifference(arr: [[Int]]) -> Int {
// Write your code here
let rowNumber = arr[0][0]
var leftD = 0
var rightD = 0
for i in 1...rowNumber {
leftD += arr[i][i - 1]
}
var increasedNum = 0
for i in (1...rowNumber).reversed() {
rightD += arr[i][increasedNum]
increasedNum += 1
}
var absoluteDifference = leftD - rightD
if absoluteDifference < 0 {
absoluteDifference = absoluteDifference * -1
}
return absoluteDifference
}
这是挑战页面:
https://www.hackerrank.com/challenges/diagonal-difference/problem
答案 0 :(得分:0)
func diagonalDifference(arr: [[Int]]) -> Int {
var difference = 0
for i in 0..<arr.count {
difference += (arr[i][i] - arr[i][arr.count-1-i])
}
return Int(abs(difference))
}
答案 1 :(得分:0)
您的问题是对传递给diagonalDifference()
函数的内容的误解。调用该函数的代码使用输入的第一行来正确调整数组大小,但是值未被传递给arr[0][0]
中的函数。相反,应使用arr.count
确定数组的尺寸,然后应将数组索引为0..<arr.count
。
要修改您的代码
更改:
let rowNumber = arr[0][0]
收件人:
let rowNumber = arr.count
更改:
leftD += arr[i][i - 1]
收件人:
leftD += arr[i][i]
并更改两个实例
1...rowNumber
收件人:
0..<rowNumber