擅长:python、mysql、java
<p>下面是一种使用列表理解实现暴力方法的方法:</p>
<pre><code>arr = [1,3,5,7,9]
target = 6
i,j = next((i,j) for i,n in enumerate(arr[:-1]) for j,m in enumerate(arr[i+1:],i+1) if n+m==target)
</code></pre>
<p>输出:</p>
<pre><code>print(f"arr[{i}] + arr[{j}] = {arr[i]} + {arr[j]} = {target}")
# arr[0] + arr[2] = 1 + 5 = 6
</code></pre>
<p>也许使用迭代器更适合Python:</p>
<pre><code>from itertools import tee
iArr = enumerate(arr)
i,j = next((i,j) for i,n in iArr for j,m in tee(iArr,1)[0] if n+m==target)
</code></pre>
<p>当您开始实施O(n)解决方案时,您应该查阅字典:</p>
<pre><code>d = { target-n:j for j,n in enumerate(arr) }
i,j = next( (i,d[m]) for i,m in enumerate(arr) if m in d and d[m] != i )
</code></pre>