优雅的递归算法(二)交叉合并
Preface
将两个切片按指定批次大小交替合并, 参数 batch 表示每次从切片取出元素个数。
常规实现(迭代)
|
|
递归实现
|
|
这里使用slices.Concat()
函数来合并切片, 而不是append()
,因为append会修改原始slice。
方案对比
方案 | 时间复杂度 | 空间复杂度 | 适用场景 |
---|---|---|---|
迭代 | O(M+N) | O(M+N) | 大多数场景,尤其是内存受限的情况 |
递归 | O(M+N) | O(M+N) 额外O(M+N) | 简洁优雅,不易出错(缺点:递归合并需分配临时空间) |
单元测试
|
|