zoukankan      html  css  js  c++  java
  • leetcode刷题1:两数之和two_sum

    题目:(难度:Easy)
    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
    你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

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

    答案:

    class Solution:
        def twoSum(self, nums, target):     # 第一个数+ 第二个数  = target
            seen = { }
            for index, num in enumerate(nums):
                key = target - num   
    
                if key in seen: 
                   return[seen[key], index]   #返回第一个数的索引和第二个数的索引
                else:
                    seen[num] = index   #sen字典存放第一个数以及其在nums中的索引
            
    
            return [ ]
    
    a = [1,2,4,5,6]
    s= Solution()
    s.twoSum(a,6)
    

    注意:对于字典的这种方式,如果我们只是判断 i 以及 target - i 是不是相等,
    这样是错误的,如果两个元素相同,但是不是同一个元素,那就会出错了

    复杂度分析:
    时间复杂度:O(n), 我们只遍历了包含有 n个元素的列表一次。在表中进行的每次查找只花费 O(1)O 的时间。
    空间复杂度:O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 n 个元素。

  • 相关阅读:
    读图,特征提取——形状
    5.2 SW1控制LED1亮灭(中断功能)
    3、寄存器
    5.1、按键SW1控制LED1亮灭
    4.2、LED1、LED2交替闪烁
    2、编程工具IAR、烧写工具SmartRF的使用
    4.1、实现4个LED灯同时闪烁
    1、CC2530单片机介绍
    装windows系统教程
    连接夜神模拟器
  • 原文地址:https://www.cnblogs.com/HongjianChen/p/9638178.html
Copyright © 2011-2022 走看看