首页 > 解决方案 > 标准输出 HackerRank Swift 没有响应

问题描述

您好,我使用 swift 在hackerRank 上练习,现在我遇到了问题。我的代码在 swift playground 中运行良好,并返回了预期的结果,但是在 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

标签: swift

解决方案


您的问题是对传递给您的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

推荐阅读