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中的。

  • 相关阅读:
    w3c标准
    HTML+CSS理解
    Mybatis源码日记(一)
    Sqlmap学习笔记(三)
    EasyExcel读取跨行单元格数据为空的解决办法
    Sqlmap学习笔记(二)
    Sqlmap学习笔记(一)
    Linux安装运行Typora
    Kafka环境搭建
    Mysql主从配置
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10809379.html
Copyright © 2011-2022 走看看