LeetCode简单_1_两数相加

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

两种方法,第一种时间超过范围了

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: Caramel
@file: 1.py
@time: 2020/02/25
@desc:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

"""

#双循环直接找
def twoSum_1(list1, target):
    i = 0
    for i in range(0, len(list1)):
        for j in range(i + 1, len(list1)):
            if list1[i] + list1[j] == target:
                return i, j
 
#利用字典表
def twoSum_2(list2, target):
    dict = {}#新建字典表
    for i, item in enumerate(list2):#i对应key,item对应值
        j = target - item#定义item对应的缺少的另一半整数
        if dict.get(j):#如果想要找的整数在字典表中
            return i, dict.get(j)#返回两个数的索引
        dict[item] = i#最后再加入字典表可以防止两个数都是一样的问题
        #自定义字典表,不会覆盖key一样的值
if __name__ == '__main__':
    alist = [2, 5, 5, 9]
    print(twoSum_2(alist, 10))

猜你喜欢

转载自blog.csdn.net/qq_42007339/article/details/104607113