美文网首页
LeetCode-两数之和

LeetCode-两数之和

作者: shicoder | 来源:发表于2019-10-21 17:49 被阅读0次

    题目:

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

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

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    

    分析

    • 方法一:首先取出nums中的第一个数,然后依次取出后面的所有数,相加,若和为target,则返回index,然后取第二个数,循环下去。代码如下
    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            print(len(nums))
            fanhui=[]
            length=len(nums)
            for i in range(length):
                a=nums[i]
                for j in range(i+1,length):
                    b=nums[j]
                    # print(b)
                    if a+b==target:
                        fanhui.append(i)
                        fanhui.append(j)
                        
            return fanhui
    
    • 方法二:用字典的方法,python里的字典相当于hash表,代码如下
    class Solution(object):
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            hashmap={}
            for i,num in enumerate(nums):
                if num in hashmap:
                    return[hashmap[num],i]
                else:
                    hashmap[target-num]=i
    

    相关文章

      网友评论

          本文标题:LeetCode-两数之和

          本文链接:https://www.haomeiwen.com/subject/uwztvctx.html