加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 如何使用高阶函数得到对角线的总和?

发布时间:2020-12-14 05:29:12 所属栏目:百科 来源:网络整理
导读:考虑以下2D数组: let array = [ [11,2,4],[4,5,6],[10,8,-12] ] 我想得到的是对角线的总和: 作为firstDiagnal:11 5(-12)= 4 作为secondDiagnal:4 5 10 = 19 我可以使用标准的for-in循环来实现它: var firstDiagnal = 0var secondDiagnal = 0for i in 0.
考虑以下2D数组:
let array = [
                [11,2,4],[4,5,6],[10,8,-12]
            ]

我想得到的是对角线的总和:

>作为firstDiagnal:11 5(-12)= 4
>作为secondDiagnal:4 5 10 = 19

我可以使用标准的for-in循环来实现它:

var firstDiagnal = 0
var secondDiagnal = 0

for i in 0..<array.count {
    firstDiagnal += array[i][i]
    secondDiagnal += array[i][array[i].count - 1 - i]
}

print(firstDiagnal)
print(secondDiagnal)

但是,如果我们尝试使用高阶函数会是什么呢?如地图和减少?

要获得第一笔总和,您需要第i行的第i个元素:
let firstDiag = array.enumerated().map { $1[$0] }.reduce(0,+)

要获得第二笔金额,您需要相同的东西,但列相反:

let secondDiag = array.enumerated().map { $1.reversed()[$0] }.reduce(0,+)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读