发现违反规定,不能删除
答案 0 :(得分:0)
没有理由使用set()
。您应该只对分隔线前后的数字求和。
您应该将苹果的数量与篮子的数量放在一个单独的列表中,这样就不必跳过列表的第一个元素。而且您无需复制然后删除内容,只需使用原始列表的一部分即可。
with open("jagasis.txt") as f:
count = int(f.readline().strip())
baskets = [int(strip(x)) for x in f]
sums = []
for x in range(1, count-1):
left = sum(baskets[:x])
right = sum(baskets[x:])
sums.append(abs(left - right))
result = index(min(sums)) + 1
with open("jagaval.txt", "w") as f:
f.write(str(result))
这不是最有效的算法,它是O(n**2)
。一种更有效的算法实现了,每当您将分界线向右移动时,分界线处的元素就会添加到左侧总和中,并从右侧总和中减去。因此,如果这是一场编码竞赛,则应使用该算法,否则可能会由于超出时间限制而失败。
答案 1 :(得分:0)
我只想补充一下,如果您下次添加了对您不起作用的内容,那会很好,因为很多事情可能都不在“起作用”。干杯。