我有以下数据:
(def letters [:a :b :c :d :e :f :g ])
(def group-sizes [2 3 2])
Run Code Online (Sandbox Code Playgroud)
什么是按大小分组字母的惯用方法,这样我得到:
[[:a :b] [:c :d :e] [:f :g]]
Run Code Online (Sandbox Code Playgroud)
谢谢.
(->> group-sizes
(reductions + 0)
(partition 2 1)
(map (partial apply subvec letters)))
Run Code Online (Sandbox Code Playgroud)
该算法要求输入coll letters是矢量并且至少具有所需的(apply + group-sizes)元素量.它返回mapv与输入向量共享结构的向量的惰性seq(或向量,如果使用).
由于subvec它们是在O(1)中创建的,因此总时间复杂度应该是O(N),其中N是(count group-sizes),与Diegos算法相比,其中N将是非常高的(count letters).
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |