(每日一题!!!)
Q:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
法1:使用for循环,从 flag1 == 0开始flag2在flag1后一位依次迭代循环。
def twoSum(nums, target):
for flag1 in range(lenght):
for flag2 in range(flag1 + 1, lenght):
if nums[flag1] + nums[flag2] == target:
return [flag1, flag2]
此方法所需时间较长,所有测试样例跑完用了1880 ms
法2:使用index函数 在lst中快速查找,
def twoSum(nums, target):
leng = len(nums)
i = -1
for j in range(leng):
temp = nums[:j]
if (target - nums[j]) in temp:
j = temp.index(target - nums[j])
break
if i >= 0:
return [i, j]
此方法所需时间为312 ms
法3:查看一些题解时发现可以使用哈希求解,这里通过字典模拟哈希查找过程
def twoSum(nums, target):
hashdic = {}
for ind, num in enumerate(nums):
if hashdic.get(target - num) is not None:
return [ind, hashdic.get(target-num)]
hashdic[num] = ind
此方法所需时间为20 ms