【发布时间】:2013-05-07 06:32:39
【问题描述】:
我有一张带有 (xi,f(xi)) 的地图,我的 f(xi) 也在严格增加。我需要以这种方式交换 key 和 vals
我的函数的输入:
带有
的地图//keys : x0, x1, x2, ..., xn
// vals : f(x_0) f(x1), f(x2), ..., f(xn)
我的函数的输出: 一张地图
// key : left_val f(x_0) f(x1), ..., f(xn-1)
// vals : x0, x1, x2, ..., xn
(这里left_val是一个输入参数,我知道它低于f(x0))。 我知道我可能没有使用正确的结构,但我真的需要 log(n) 插入和有序键的唯一性......
您将如何有效地实现这一点(即不复制地图)?
提前致谢。
【问题讨论】:
-
你到底想做什么??
-
@Mario 我更改了函数的输入输出规范。是不是更清楚了?
-
你已经给出了 'left_val' 并寻找 'f(x_n)
-
作为算法问题还是使用标准库容器?
-
@DyP:如果元素已经排序(因为它们在这里),您可以在 O(n) 时间内构建一个新地图,并且您向
insert提供提示,每个都应该放在最后.