class Solution:
# 排序 + 双指针
def twoSum1(self, nums, target):
n = len(nums)
# 升序
nums.sort()
# 声明双指针索引
l = 0
r = len(nums) - 1
while (l < r):
if (nums[l] + nums[r] < target):
l = l + 1
elif (nums[l] + nums[r] > target):
r = r - 1
else:
return [l, r]
return []
# 空间换时间 先把出现的值进行预存 然后target - nums[i]看是否有预存的值 有的话就符合要求了 取出
def twoSum2(self, nums, target):
n = len(nums)
mapper = {}
for i in range(n):
if (target - nums[i] in mapper):
return [mapper[target - nums[i]], i]
else:
mapper[nums[i]] = i
return []
a = Solution()
print(a.twoSum1([1, 2, 11, 2, 3, 7, 15], 9))