Bel*_*lla 1 transpose padding multidimensional-array swift3
我的数组是 [[Int]] 类型
array = [[1,2,3],
[4,5,6],
[7,8,9,10],
[11,12,13],
[14,15,16]]
Run Code Online (Sandbox Code Playgroud)
我希望转置结果为:
array = [[1,4,7,11,14],
[2,5,8,12,15],
[3,6,9,13,16],
[0,0,10,0,0]]
Run Code Online (Sandbox Code Playgroud)
如何将 0 填充到没有相等行或列映射的数组。
我希望转置适用于具有不相等映射元素的行和列。请帮忙。
Here is an implementation that does what you want:
func transpose(_ input: [[Int]]) -> [[Int]] {
let columns = input.count
let rows = input.reduce(0) { max($0, $1.count) }
var result: [[Int]] = []
for row in 0 ..< rows {
result.append([])
for col in 0 ..< columns {
if row < input[col].count {
result[row].append(input[col][row])
} else {
result[row].append(0)
}
}
}
return result
}
Run Code Online (Sandbox Code Playgroud)
Or, alternatively:
func transpose(_ input: [[Int]]) -> [[Int]] {
let columns = input.count
let rows = input.reduce(0) { max($0, $1.count) }
return (0 ..< rows).reduce(into: []) { result, row in
result.append((0 ..< columns).reduce(into: []) { result, column in
result.append(row < input[column].count ? input[column][row] : 0)
})
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |