![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计
加油开心
你好呀
展开
-
leetcode:黑名单中的随机数
那1难道映射到4位置处?不行,所以要判断你映射处的位置是不是黑名单数。还有一个问题,如果本身黑名单数就在末尾,那自然不用映射。这样随机到了1,那么他的映射是4,则随机数是4。随机到了2,那不在黑名单不用查表,直接就是2。比如0,1,2,3,4,黑名单是1,3。比如还是上面5个数,黑名单是1,3,4。自然,3和4不用映射,本来就在数组末尾。建一个哈希表,只需要把1映射到4处。就是把黑名单数放到数组末尾。原创 2024-08-20 14:14:30 · 198 阅读 · 0 评论 -
leetcode:O(1)时间插入、删除和获取随机元素
这题需要哈希表配合数组一起来。牵扯到随机性那就得数组了。删除的话,交换到末尾删除。比如下图,你要删除元素7。先获取7元素的索引,为3。然后将末尾元素索引改为3。原创 2024-08-20 13:55:54 · 168 阅读 · 0 评论 -
leetcode:最短单词距离 II
再加上shortest操作次数,次数×每次遍历时间,可能就超了。然后后面的求最短距离,每次调用时,由于用了哈希表,速度快很多。所以我的方法没错,但是时间有点长,每次都要遍历一遍数组。哈希表键是字符串,值是列表,存的是键单词对应的索引。找到单词后,直接双指针遍历列表里的计算最短距离即可。这样的话只用第一次,就把所有单词都加到了哈希表里。什么是shortest操作次数不大于5000。用哈希表的话,次数×时间,不会超时。和之前最短单词距离代码一样的。很遗憾12个例子通过了11个。不是很理解何为设计?原创 2024-08-08 14:17:25 · 95 阅读 · 0 评论 -
leetcode:用栈实现队列
栈a把所有元素全部压入另一个栈b中。当然,如果栈b本身不为空。那么直接栈b弹出即可。原创 2024-08-07 12:50:04 · 120 阅读 · 0 评论 -
leetcode:用队列实现栈
原理就是每进入一个元素,要把之前元素都移除队列再重新进入队列。可以用两个队列实现,也可以用一个队列实现。即始终保持新进入的元素在最前面即可。我这里用的是一个队列实现。原创 2024-08-06 11:25:48 · 199 阅读 · 0 评论