如何针对内存错误优化此python3代码?

时间:2018-12-24 18:48:51

标签: python-3.x loops iterator

import itertools

num_cases = int(input())

answer_list = []

while num_cases>0:
    live_ans = []
    nums = int(input())
    d1 = int(input())
    d2 = int(input())
    sample_space= {d1, d2}

    for i in itertools.product(sample_space, repeat = nums-1):
        if sum(i) not in live_ans:
            live_ans.append(sum(i))
        else:
            pass
    live_ans.sort()
    answer_list.append(live_ans)
    num_cases -= 1

for i in answer_list:
    finalans = " ".join(map(str, i))
    print(finalans)

此代码适用于小型测试用例,例如: 1个 3 1个 2

但是会为以下输入抛出内存错误:     1个     58     69     24

(从代码中可以明显看出,空格分隔的整数实际上是每行输入一个数字)

当itertool操作乘积元组时,将产生内存错误,并且nums的值很大(第二种情况下为58)。还有什么可以做的?

问题陈述可在这里找到:https://www.hackerrank.com/challenges/manasa-and-stones/problem

0 个答案:

没有答案