剑走偏锋吧,每次遍历 i 再根据二分查找找到 tsum - array[i] 的位标。 最后可能出现查找到与当前i相同位标的情况,将其舍去。 时间复杂度 O(nlogn) # -*- coding:utf-8 -*- class Solution: def FindNumbersWithSum(self, array, tsum): for i in range(len(array)): ans = self.midfind(array, 0, len(array)-1,tsum - array[i]) if ans != -1 and ans != i: return [array[i],array[ans]] return [] def midfind(self,data,low,high,val): while low <= high: mid = (low + high) >> 1 if data[mid] == val: return mid if data[mid] > val: high = mid-1 else: low = mid + 1 return -1