两数之和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
old_num = nums
nums = sorted(nums)
for x in range(len(nums)):
new_target = target-nums[x]
left = x+1
right = len(nums)-1
while left <= right:
mid = (left+right)>>1
if nums[mid]==new_target:
# 找到原索引位置
index_1 = old_num.index(new_target)
old_num[index_1] = None
index_2 = old_num.index(nums[x])
return [index_1,index_2]
elif nums[mid]>new_target:
right = mid-1
else:
left = mid+1