hash
题意:
需要平均O(1)时间实现三个操作:
(1)向集合插入一个数
(2)向集合删除一个数
(3)随机返回集合里的一个数(等概率)
思路:
不清楚确保随机的要怎么测评,但要做到等概率,只有数组才可能O(1)啊.
插入和删除用hash链表都可以O(1),但是由于要O(1)随机,所以hash表不记录值,而记录值在数组里的位置.
数组里在删除值的时候,先和数组末元素swap一下,再删除.
删除和插入时,数组和hash表都要同时更新.
总结:
一个数组记录值+一个hash表记录下标.