注意: 一般哈希表的增删改查的时间复杂度默认为O(1).
题目如图:
思路: 这个思路很简单,就是通过两个哈希表实现.
- 这两个哈希表分别为
map1和map2
,map1中的key,value分别作为map2中的value,key,也就是map1和map2中的数据是反的,map1中的key是map2中的value. - 因为没有给定value,在map1中,我们就将数据插入的次序设置为value,比如第一个插入的是"fan",那么map1中的数据就是
fan, 1
这样子,map2同步插入就成,只是说跟map1是相反的而已. - 获取随机数的时候,就通过
math.random或者random类都可以,
这时候map1中的value就起到了作用,value的范围就是随机的范围. - 删除的时候要特别注意:因为删除之后,那一条记录都会被删掉,所以map1中value表示的范围内就会有一个空的洞,所以我们取随机的时候就有可能会得到null,这不是我们想要的,所以我们选择用最后一条元素去交换要删除的元素,然后删除最后一条元素,这样就没有洞了.