3.1w+
社区成员
今天在刷LeetCode,同样实现的是滑动窗口,但是自己用的是列表模拟的队列操作,别人用的是集合操作,耗时差别好大。。。
如果需要看问题题干可以移步:博客链接
这个是我自己实现的代码如下
class Solution(object):
def containsNearbyDuplicate(self, nums, k):
queue = []
for i in nums:
if len(queue) > k:
queue.pop(0) # 去头
if i in queue:
return True
queue.append(i)
return False
提交之后,耗时太多。
别人写的代码如下
class Solution:
def containsNearbyDuplicate(self, nums, k):
window = set()
for i, num in enumerate(nums):
if len(window) == k + 1:
window.remove(nums[i - 1 - k])
if num in window:
return True
window.add(num)
return False
耗时明显低了很多
自己感觉可能是python底层实现的逻辑,导致list的append和pop在数据量大的情况下,比set的remove和add的方法耗时大的结果?
但自己还是不确定,请各位大佬帮忙解释一下。