如何在java和/或python中浏览超长的数据列表



我在java和python中都遇到了障碍。我正在使用codewars.com练习编码练习,在这两种语言中,我都不知道如何使代码更快。当我试图完成一个卡塔时,我总是被超时。这是我目前遇到的问题:

对数之和给定一个整数列表和一个单一的和值,按出现的顺序返回前两个值(请从左边解析(,这些值加起来形成和。

如果有两个或更多对具有所需的和,则第二个元素具有最小索引的对就是解。

负数和重复数字可能出现,也将出现。

注:还将有长度超过10000000个元素的测试列表。请确保您的代码不会超时。

这是我的代码,它适用于测试运行,但在尝试使用10000000个元素进行随机测试时超时:

def sum_pairs(ints, s):
answer_list = [None] * 2
lowest = 10000000
for i in range(len(ints)):
count = 0
for j in range(i, len(ints)):    
count += 1
if j == (len(ints) - 1):
break
if ints[i] + ints[j + 1] == s and count < lowest:
answer_list[0] = ints[i] 
answer_list[1] = ints[j + 1]
lowest = count
if answer_list == [None, None]:
return None
else:
return answer_list

这是我第一次写Stackoverflow。我也想知道这种提问方式是否合适。谢谢你,祝你今天愉快!

他们期望的解决方案可能是使用更好的数据结构,使用一些空间来获得时间。这可以通过使用地图或字典来完成

def sum_pairs(ints, s):
answer_list = [None] * 2
lowest = 10000000
d = {}
for i in range(len(ints)):
if s - ints[i] in d:
answer_list[0] = ints[d.get(s - ints[i])]
answer_list[1] = ints[i]  
return answer_list
else:
d[ints[i]] = i
return None

最新更新