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很陌生,所以不知道如何优化这些循环以减少内存的使用。
发布于 2022-12-03 16:59:00
优化此代码中内存使用的一种方法是避免使用列表来存储打开的灯泡数量。相反,您可以使用Python设置来存储灯泡的数量,这样更节省内存。
下面是代码的更新版本,它使用一个集合来存储灯泡的编号:
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上的测试,而不会出现内存使用错误。
https://stackoverflow.com/questions/74668660
复制相似问题