【发布时间】:2016-11-23 23:38:23
【问题描述】:
我知道跳过列表是一种排序的数据结构,但它可以有重复的元素吗?还是应该是,如果您尝试插入一个已经存在的元素,它只会返回指向预先存在的元素的指针?
【问题讨论】:
标签: data-structures duplicates skip-lists
我知道跳过列表是一种排序的数据结构,但它可以有重复的元素吗?还是应该是,如果您尝试插入一个已经存在的元素,它只会返回指向预先存在的元素的指针?
【问题讨论】:
标签: data-structures duplicates skip-lists
答案是“是的,skiplist 可以有重复的元素,但不是必须的。”
你能制作一个支持重复的跳过列表吗?绝对地!您只需更新插入过程,这样如果您看到要查找的元素,您只需在其后面插入该元素。这类似于您如何拥有一个存储多个相等值的 BST - 您只需让插入过程在找到相等元素时始终向左或始终向右。
但必须跳过列表总是允许重复?不,不必,就像并非所有 BST 都允许重复一样。
如果您使用的是 skiplist 库,请查阅文档以查看它是否支持重复。如果您正在创建自己的,请随意构建它,并记录您的决定。
【讨论】:
TreeSet 中的等效方法慢 1 到 4 倍,但支持随机访问和重复)。为了您的兴趣,我的实现在这里:github.com/Dicee/algorithmicProblems/blob/master/hackerrank/…