2011-12-05 32 views

回答

5

只存儲10之差在一組:

def find(arr, total): 
    d = set() 
    for e in arr: 
     if e in d: 
      print total-e, e 
      break 
     d.add(total-e) 

s = [1,5,3,10,11,7,2] 
find(s, 10) 
+0

大約三分鐘內的一個很好的例子。我印象深刻。 :) – sarnold

+0

你應該使用'set'而不是'dict'來測試成員資格。 –

+0

不錯,這是'O(n)'。儲存補充物並查看它們何時被發現是一個不錯的方法。 –

3
l = [1, 3, 4, 5, 6, 7, 8, 9] 
[(x,y) for x in l for y in l if x+y==10] 
+0

雖然是'O(n^2)'...... –

相關問題