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

    题目描述:

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

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

    示例:

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/two-sum

    代码:

     1 def twosum(nums, target):
     2     '''
     3 
     4     :param nums:
     5     :param target:
     6     :return:
     7     '''
     8     result = []
     9     for i in range(len(nums)):
    10         if target - nums[i] in result:
    11             p = result.index(target - nums[i])
    12             return [p, i]
    13         else:
    14             result.append(nums[i])
    15 
    16 
    17 print("------------测试twoSum()----------")
    18 nums = [3, 2, 4]
    19 res = twosum(nums, 6)
    20 print("res=", res)
    21 
    22 
    23 def twoSum1(nums, target):
    24     '''
    25 
    26     :param nums:
    27     :param target:
    28     :return:
    29     '''
    30     dct = {}
    31     for i, n in enumerate(nums):
    32         if target - n in dct:
    33             return [dct[target - n], i]
    34         dct[n] = i
    35 
    36 
    37 print("------------测试twoSum()----------")
    38 nums = [3, 2, 4]
    39 res = twoSum1(nums, 6)
    40 print("res=", res)

    输出:

    ------------测试twoSum()----------
    res= [1, 2]
    ------------测试twoSum()----------
    res= [1, 2]

    总结:看题目好像很简单,其实这是一道比较经典的题目。简单朴实无华的题目往往会涉及到很多知识点,感觉自己要做出来了,但提交总是显示有错误。本博客采用两种方法来解答,但其实有异曲同工之妙。都是额外借助一个列表或者字典实现循环遍历过程中查重判断需要。掌握了新函数enumerate()用法。

  • 相关阅读:
    左孩子右兄弟的字典树
    UVA 1401 Remember the Word
    HDOJ 4770 Lights Against Dudely
    UvaLA 3938 "Ray, Pass me the dishes!"
    UVA
    Codeforces 215A A.Sereja and Coat Rack
    Codeforces 215B B.Sereja and Suffixes
    HDU 4788 Hard Disk Drive
    HDU 2095 find your present (2)
    图的连通性问题—学习笔记
  • 原文地址:https://www.cnblogs.com/rounie/p/13156091.html
Copyright © 2011-2022 走看看