力扣两数之和

力扣两数之和

要求

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

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

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

思路1

1.创建一个新的数组l **
** 2.遍历原数组 看目标值target-num[i]是否再l 中,如果再其中就返回这个i的下标,和l数组中的target-num[i]的结果 的下标索引

3.如果不在,那么就把这个数字插入到相应的位置,如果遍历完全都没有找到这个值就返回[]
代码片

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        
        l=[None]*len(nums)
        for i in range(len(nums)):
            
            if target-nums[i] in l:
                return [i,l.index(target-nums[i])]
            else:
                l.insert(i,nums[i])
                
        return []

思路2

1.创建一个新的字典map1(可以存数组中的位置和值) **
** 2.枚举原数组 看目标值target-num[i]是否再lmap1中,如果再其中就返回这个i的下标,和map1中的target-num[i]的结果 的下标索引

3.如果不在,那么就把这个数字的索引插入到相应值的位置(注意 值为键,索引为为值)
例如 nums=[3,4] 3的位置为0 ,4的位置为1.字典为{“3”:0,“4”:1}
代码片

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        
        map1=dict()
        for i,x in enumerate(nums): //可以遍历位置和值
            if target-x in  map1:
                return [i,map1[target-x]]
            map1[x]=i
        

猜你喜欢

转载自blog.csdn.net/weixin_41781408/article/details/86514262
今日推荐