在一个3x3矩阵表示中,我可以找到Swift
中两个对角线与一个线性的和,如下所示,
let array = [
[1, 2, 3],
[4, 5, 6],
[-7, 8, 9]
]
let d1 = array.enumerated().map({ $1[$0] }).reduce(0, +)
let d2 = array.reversed().enumerated().map({ $1[$0] }).reduce(0, +)
print(d1) // prints 15
print(d2) // prints 1
字符串
我能够在Kotlin
中找到map
和reduce
的等价物,如flatMap
和fold
,但找不到enumerated
。
我们如何在Kotlin
中实现类似的高阶函数?
3条答案
按热度按时间kpbwa7wx1#
从以下输入开始:
字符串
这就是我对对角线和的表述
型
注意,这是对你的解决方案的一个改进,因为它不需要创建反向数组,它将时间复杂度从O(n2)提高到O(n).
如果你处理的是大型矩阵,那么通过使用
fold
而不是reduce
,将空间复杂度从O(n)降低到O(1)也是值得的:型
wkftcu5l2#
你好像在找withIndex
twh00eeo3#
这对我来说几乎和Swift的版本一样
字符串