我的解法 双指针
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
n = len(nums) #列表长度
cur = 0 #初始化指针
cur_move = cur + 1 #初始化指针
while cur < n-1: #设定循环条件 在cur遍历到倒数第二个数时,均可以循环
for i in range(n-1): #cur_move指针遍历
if nums[cur] + nums[cur_move] == target:
return [cur,cur_move]
else:
if cur_move < n-1:
cur_move += 1
cur += 1 #进入下一个循环
cur_move = cur+1 #在cur之前的数值 cur_move指针无需在指向
哈希表 HashTable
哈希表
构件一个实现map的数据结构,键值对,一个指向数,一个指向索引
整个函数循环i只走一遍 不符合条件则存入map字典中 所以不会有重复的现象
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
map = dict() #构件字典映射
n = len(nums) #列表长度
for i in range(n): #设置(0,n-1)的循环
temp = target - nums[i] #目标值与第一个数之差
if temp in map: #在映射字典中 查找是否有该值
return [map[temp],i] #有则返回位置
map[nums[i]] = i #不满足条件则在字典中加入映射