list - 在线性时间内反转排列,仅使用列表

标签 list haskell permutation

我想定义一个函数

invert :: [Int] -> [Int]

假设其输入是 [0..(n-1)] 的排列,并返回它的倒数。是否可以仅使用列表和元组(没有数组)来定义它,以便它在线性时间内运行?

这主要是出于学术兴趣;在实际代码中,我可能会使用 ArraySTArray或类似的。

最佳答案

不确定线性时间,只是一个初学者笔记。

λ> (\x -> map snd $ sort $ zip x [1..(length x)]) [3,8,5,10,9,4,6,1,7,2]
[8,10,1,6,3,7,9,2,5,4]

关于list - 在线性时间内反转排列,仅使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322238/

相关文章:

python - 无法使用 python 查找元音计数

c++ - 使用 std::experimental::optional 实现列表

haskell - 如何在提示中强制解释

java - 复杂的 Java 排列生成问题

python - 我想让 Euler 24 项目的解决方案更有效率

android - 如何从 Android LiveData<List<T>> 获取简单的 List<T>?

python - 检查对象是否在 pyshark 给出的列表中

haskell - 为什么 Haskell 使用箭头表示函数的类型?

haskell - GHC 分析文件和图表矛盾

java - 了解使用数组中所有可能组合的递归