숫자가 주어지면, 그 총합이 그 숫자와 같은 배열에서 가능한 모든 인덱스 쌍을 찾아야합니다. 현재 다음 알 고를 사용 중입니다.주어진 합계로 쌍을 열거하는 데 더 나은 알고리즘 (dict 사용보다).
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)
시간에 실행할 수 있습니까?
화제가 아닌 것은 무엇을 의미합니까? 코드를 제공하지 않는 솔루션을 요구하면 연구를 보여주지 않아 벌칙이 부과됩니다. 그렇게 할 때 마이그레이션해야한다고 말합니까? – SexyBeast
@vascowhite (및 다른 유권자) : FAQ 중 특히 "위반하는"부분은 무엇이라고 생각하십니까? FAQ에서 : '실제 문제를 기반으로 실용적이고 답할만한 질문을해야합니다.' 그는 문제와 그의 시도를주고있다. 그는 또한 특정 범위의 질문을 질문합니다 (복잡성은 무엇입니까? O (n)보다 더 잘할 수 있습니까?) – amit
질문이 없지만 합이 같은 모든 쌍을 찾고 싶다면 정정하십시오. 그 쌍보다 주어진 수는 개별적으로 그 수보다 작아야합니다. 그래서, 만약 당신이'[1,2,3,4,5,6,7,8,9,10]'리스트를 받았고'sum == 6 '을 갖는 모든 쌍을 찾을 수 있다고 가정 해 봅시다. 먼저 목록을'[1,2,3,4,5,6]으로 필터링하고 그 쌍을 찾는다. – RanRag