python列表操作和集合操作有效率差异嘛

Ans_min 2023-02-08 11:11:31

描述

今天在刷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的方法耗时大的结果?

但自己还是不确定,请各位大佬帮忙解释一下。

...全文
13 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,781

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧