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()用法。

  • 相关阅读:
    小毛病,大问题
    [zz]Libvirt 虚拟化库剖析
    libvirt XML 学习笔记
    Ubuntu 10.04下使用 libvirt 创建KVM虚拟机
    [zz]使用libvirt管理kvm虚拟机(更新中)
    [zz]LXC:Linux 容器工具
    一些比较好的URL
    [zz]Libvirt XML学习笔记
    [zz]一些KVM xml 例子
    [zz]kvm环境使用libvirt创建虚拟机
  • 原文地址:https://www.cnblogs.com/rounie/p/13156091.html
Copyright © 2011-2022 走看看