给定一个数字,我必须找出给定数组中所有可能的索引对,其总和等于该数字。我目前正在使用以下算法:
def myfunc(array,num):
dic = {}
for x in xrange(len(array)): # if 6 is the current key,
if dic.has_key(num-array[x]): #look at whether num-x is there in dic
for y in dic[num-array[x]]: #if yes, print all key-pair values
print (x,y),
if dic.has_key(array[x]): #check whether the current keyed value exists
dic[array[x]].append(x) #if so, append the index to the list of indexes for that keyed value
else:
dic[array[x]] = [x] #else create a new array
这会及时运行O(N)
吗?如果不是,那么应该怎么做才能做到这一点?O(N)
而且无论如何,不使用任何辅助数据结构,是否有可能让它及时运行呢?