牛牛是一头聪明的牛,他想设计一个跳表来进行快速的增加、删除和搜索操作。跳表是一种能够在 O(log(n)) 时间内完成这些操作的数据结构。牛牛希望你设计一个跳表,并实现以下几个函数: class Skiplist { public: Skiplist(); bool search(int target); 返回target是否存在于跳表中。 void add(int num); 插入一个元素到跳表。 插入成功输出true bool erase(int num); 在跳表中删除一个值,如果 num 不存在,直接返回false. 如果存在多个 num ,删除其中任意一个即可。 };
示例1
输入
[[0], [1], [1], [0], [1], [0], [2], [1], [0], [2]],[[1], [2], [3], [0], [4], [1], [0], [1], [1], [1]]
输出
[false,true,true,false,true,false,false,true,true,true]
示例2
输入
[[0], [1], [2], [0], [1], [0], [2], [1], [0], [2]],[[1], [2], [2], [1], [3], [2], [2], [4], [4], [1]]
输出
[false,true,true,false,true,false,false,true,true,false]
备注:
输入:operations:表示操作码,0位search,1为add,2为erasedata:表示对应操作数据数据范围:0 调用 search、add、erase 操作次数不大于 5 * 10^4注意:跳表中可能存在多个相同的值,你的代码需要处理这种情况。
加载中...