首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存优化循环

内存优化循环
EN

Stack Overflow用户
提问于 2022-12-03 16:48:55
回答 1查看 26关注 0票数 0
代码语言:javascript
复制
def getWhiteLightLength(n, m, lights):
    lt_nv = []
    ctd = 0
    for clr, inic, fim in lights:
        for num in range(inic, fim+1):
            lt_nv.append(num)
    c = Counter(lt_nv)
    for ch, vl in c.items():
        if vl == m:
            ctd += 1
    return(ctd)

我正在执行这个HackerRank解决方案,它通过了一半的测试,但是对于其他的测试,我得到一个内存使用错误。我对python很陌生,所以不知道如何优化这些循环以减少内存的使用。

EN

回答 1

Stack Overflow用户

发布于 2022-12-03 16:59:00

优化此代码中内存使用的一种方法是避免使用列表来存储打开的灯泡数量。相反,您可以使用Python设置来存储灯泡的数量,这样更节省内存。

下面是代码的更新版本,它使用一个集合来存储灯泡的编号:

代码语言:javascript
复制
from collections import Counter

def getWhiteLightLength(n, m, lights):
    lt_nv = set()
    ctd = 0
    for clr, inic, fim in lights:
        for num in range(inic, fim+1):
            lt_nv.add(num)
    c = Counter(lt_nv)
    for ch, vl in c.items():
        if vl == m:
            ctd += 1
    return ctd

在此代码中,lt_nv集用于存储打开的灯泡数。add()方法用于将每个数字添加到集合中,而Counter()函数用于计算每个灯泡数在集合中出现的次数。

更新后的代码应该具有更高的内存效率,并且应该能够通过HackerRank上的测试,而不会出现内存使用错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74668660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档