我想定义一个功能

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]

07-24 09:38
查看更多