class Solution:
def twoSum(self, numbers, target):
"""
:type numbers: List[int]
:type target: int
:rtype: List[int]
"""
# First method 遍历方法
# new_numbers = sorted(set(numbers))
# for i in range(len(new_numbers)):
# for j in range(i,len(new_numbers)):
# if new_numbers[i] + new_numbers[j] == target:
# index1 = numbers.index(new_numbers[i])+1
# numbers.remove(new_numbers[i])
# return [index1, numbers.index(new_numbers[j])+2]
# Second method
# new_numbers = sorted(set(numbers))
# for i in range(len(new_numbers)):
# number2 = target- new_numbers[i]
# if number2 in new_numbers:
# if number2 == new_numbers[i]:
# return [numbers.index(new_numbers[i])+1, numbers.index(number2)+2] # 处理number1 == number2 相同的情况,他们总是挨着
# return [numbers.index(new_numbers[i])+1, numbers.index(number2)+1]
# third method
# new_numbers = sorted(set(numbers))
# for i in range(len(new_numbers)):
# number2 = target- new_numbers[i]
# if number2 in new_numbers:
# ans = numbers.index(new_numbers[i])+1
# numbers.remove(new_numbers[i])
# return [ans, numbers.index(number2)+2]
# fourth method 利用字典,巧妙地去掉了重复元素,并且不用特殊处理两个因子相等的情况。
check={}
for i in range(len(numbers)):
if numbers[i] in check:
return [check.get(numbers[i])+1,i+1]
else:
check[target-numbers[i]]=i
leetcode 167. Two Sum II - Input array is sorted 两数之和 II - 输入有序数组 python 多种思路 字典可以构建双指针结构
猜你喜欢
转载自blog.csdn.net/huhehaotechangsha/article/details/80854300
今日推荐
周排行