我正在处理一个编程问题,遇到了难题。我想构建一种数据结构来将任意整数映射到另一个整数。你可能会说“哈希表!”或“搜索树!”,事实上我已经考虑过这些方法(甚至尝试了一种不太可靠的实现)。但是,有个问题!
每次我插入或移除映射值时,我想对所有大于等于插入/移除值的值进行增量/减量操作(增量/减量为1或某个任意偏移量)。
以下是一个示例:
假设我有两个整数列表,用于此映射中的键和值:
现在,如果我添加一个键值对(7, 1),我希望将所有大于或等于1的值都增加1,结果如下:
每次我插入或移除映射值时,我想对所有大于等于插入/移除值的值进行增量/减量操作(增量/减量为1或某个任意偏移量)。
以下是一个示例:
假设我有两个整数列表,用于此映射中的键和值:
Keys: (1, 6, 18, 21, 24)
Vals: (2, 1, 3, 0, 4)
现在,如果我添加一个键值对(7, 1),我希望将所有大于或等于1的值都增加1,结果如下:
Keys: (1, 6, 7, 18, 21, 24)
Vals: (3, 2, 1, 4, 0, 5)
接着,如果我删除键值对(21, 0),结果如下:
Keys: (1, 6, 7, 18, 24)
Vals: (2, 1, 0, 3, 4)
使用一些列表/数组和每次插入/删除后的一些处理,这个任务相当容易完成(即遍历值并逐个更改)。
但是,我正在寻找一种更有效的方法,也许不必遍历整个值列表并逐个增加/减少它们。甚至可以延迟增量/减量,直到请求了应该增量/减量的值。
有什么想法吗?