stdout HackerRank Swift没有反应

时间:2019-11-30 19:01:45

标签: swift

你好,我使用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

2 个答案:

答案 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