zoukankan      html  css  js  c++  java
  • 两数之和

    题目:https://leetcode-cn.com/problems/two-sum/

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

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

    示例:

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

    法一:

    def twoSum(nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        for i in range(len(nums)):
            t = i
            # print(t)
            k = nums[i]
            while i != (len(nums)-1):
                i = i + 1
                # print(k + nums[i])
                if  (k+nums[i]) == target:
                    r = i
                    m = [t,r]
                    break
                else:
                    continue
        return m

    有一个不能通过,因为运行时间长。应该使用字典查询

    法二:

    def twoSum(nums, target):
        hashmap = {}
        for i, x in enumerate(nums):
            y = target - x
            print('y is:', y)
            print(hashmap)
            if y in hashmap:
                return hashmap[y], i
            hashmap[x] = i

    思路:先将list转化为dict,再由target求出y,遍历查询hashmap中是否存在y,hashmap是已经查询过的x构成的dict,这样方便在查询到y时,直接可以返回x,因为x是存在于hashmap中的。

  • 相关阅读:
    第四周作业
    第三周作业
    第二周基础作业
    抓老鼠
    币值转换
    打印沙漏
    秋季学期学习总结
    2019春第七周作业
    2019春第六周作业 学习总结
    第五周作业总结以及学习总结
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10809379.html
Copyright © 2011-2022 走看看