A
假设我有一个这样的整数数组A[i] = j
,并且我想“反转它”;也就是说,创建另一个整数数组,B
这样B[j] = i
.
这在任何语言中以线性时间在程序上执行都是微不足道的。这是一个 Python 示例:
def invert_procedurally(A):
B = [None] * (max(A) + 1)
for i, j in enumerate(A):
B[j] = i
return B
但是,有没有办法在线性时间内以功能方式(如在函数式编程中,使用map
、reduce
或类似的函数)做到这一点?
代码可能如下所示:
def invert_functionally(A):
# We can't modify variables in FP; we can only return a value
return map(???, A) # What goes here?
如果这是不可能的,那么在进行函数式编程时最好(最有效)的选择是什么?