我的数组是 [[Int]] 类型
array = [[1,2,3], [4,5,6], [7,8,9,10], [11,12,13], [14,15,16]]
我希望转置结果为:
array = [[1,4,7,11,14], [2,5,8,12,15], [3,6,9,13,16], [0,0,10,0,0]]
如何将 0 填充到不具有相等行或列映射的数组。
我希望转置适用于具有不相等映射元素的行和列。请帮忙。
这是一个可以完成您想要的操作的实现:
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 }
或者,另一种选择:
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) }) } }