两数之和(python)

官方题目描述:

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

        你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

解题思路:

        这个题目主要的重点是拿到数值以及对应的下标,最后判断两数之和是否等于target

解法思路1 -- 使用哈希表(字典)+ enumerate函数

       利用哈希表来存储已经遍历过的元素及其对应的索引。在遍历过程中,检查当前元素与目标值的差值是否已经在哈希表中,如果是则找到了答案,否则将当前元素及其索引添加到哈希表中。这种方法的时间复杂度为 O(n)。

         使用python的内置函数,于同时获取列表、元组、字符串等可迭代对象的索引和对应的值。

如何使用 enumerate() 函数:

fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits, start=1):
    print(f'Index {index}: {fruit}')

在这个示例中,enumerate(fruits, start=1) 返回一个枚举对象,对应关系如下:

  • 第一次迭代:index=1, fruit='apple'
  • 第二次迭代:index=2, fruit='banana'
  • 第三次迭代:index=3, fruit='orange'

通过 enumerate() 函数,我们可以方便地获取可迭代对象的索引值,使代码更加简洁和易读。这在某些需要索引值的场景下非常有用,尤其是在处理列表、元组等数据结构时。

应用在这个题目上:

        利用哈希表来存储已经遍历过的元素及其对应的索引,用enumerate函数将数值和索引值拿到,通过target与遍历的数值做减法,然后拿着差值去列表中查看这个值的索引,然后输出这两个值的索引。这个算法的时间复杂度为O(n)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        index_map = {}
        for i, num in enumerate(nums):
            complement = target - num
            if complement in index_map:
                return [index_map[complement], i]
            index_map[num] = i
        return []
            

解法思路2--暴力法:

        最直接的方法是使用两层循环来遍历数组中的每对元素,然后检查它们的和是否等于目标值。这种方法的时间复杂度为 O(n^2)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(n):
            for j in range(i+1, n):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return []

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/482176.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国际品牌交期长 雷卯来帮忙

在当今的电子元器件市场中,防静电电子元器件的需求日益增长。无论是通信安防、医疗、消费类电子、照明行业、航空航天还是汽车电子等领域都会使用到防静电产品,使得防静电电子元器件的需求也呈现出爆发式的增长。在这一市场中,雷卯品牌凭借其…

JavaScript原型、原型对象、原型链系列详解(一)

(一)、JavaScript原型 原型 JavaScript 是一门面向对象的编程语言,其中原型(prototype)是一个重要的概念,它提供了一种创建对象的方式,使对象可以共享属性和方法。在 JavaScript 中,每个对象都有一个原型&a…

[医学分割大模型系列] (1) SAM 分割大模型解析

[医学大模型系列] [1] SAM 分割大模型解析 1. 特点2. 网络结构2.1 Image encoder2.2 Prompt encoder2.3 Mask decoder 3. 数据引擎4. 讨论 论文地址:Segment Anything 开源地址:https://github.com/facebookresearch/segment-anything demo地址&#x…

常见六大WEB安全问题

一、XSS跨站脚本攻击 1.Cross-Site Scripting(跨站脚本攻击)简称 XSS(因为缩写和 CSS重叠,所以只能叫 XSS),是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行…

如何在没有备份的情况下恢复 Android 上已删除的照片?

丢失 Android 设备上的珍贵照片可能是一场噩梦,尤其是在没有备份的情况下。无论是意外删除图像还是由于Android 崩溃而丢失图像,一想到它们可能会永远消失就令人沮丧。幸运的是,有多种方法可以在 Android 上恢复已删除的照片。 如何在没有备份…

声控小助手:文本语音呼唤技术的应用与实现

title: 声控小助手:文本语音呼唤技术的应用与实现 date: 2024/3/22 18:20:42 updated: 2024/3/22 18:20:42 tags: 文本语音呼唤技术原理Python实现优缺点分析应用场景未来展望人机交互 1. 引言 在当今数字化时代,文本语音呼唤技术正逐渐成为人们生活中…

内存卡的照片怎么突然就找不到了,内存卡照片突然找不到如何恢复

最近,我遇到了一个令人困惑的问题,就是我的内存卡中的照片突然间找不到了。作为一个热爱摄影的人,我经常使用内存卡来存储我的珍贵照片。然而,最近我发现,无论我如何搜索和浏览,这些照片似乎就像消失了一样。内存卡照片突然找不到如何恢复?虽然挺沮丧的,但幸好遇上了以…

arm 解决Rk1126 画框颜色变色问题(RGB转NV12)

在Rv1126上直接对Nv12图像进行绘制时,颜色是灰色。故将Nv12转BGR后绘制图像,绘制完成后转成Nv12,BGR的图像颜色是正常的,但是NV12的图像颜色未画全,如图: 1.排查发现是RGB转NV12的函数出现问题&#xff0c…

【JS】滑动验证实现

功能需求:(图片可根据自行更换) 1.、右侧标签的位置是随机生成,左侧标签和右侧标签的垂直位置是一致的, 2、通过滑动条控制左侧标签与右侧标签重叠(误差控制在2px)表示验证通过, …

安卓手机系统跳过app启动广告软件

跳过广告关于此应用声明: 应用利用了安卓系统的辅助功能API,可以读取您手机屏幕上显示的所有内容,并且可以以您的名义进行屏幕点击等操作。* 轻量无广告,不联网,也不需要任何权限;* 请务必在系统设置中开启…

链表oj测试题(上)

链表的申明: struct ListNode {int val;struct ListNode* next; }; 1.题1 删除指定元素 例如:链表1 2 6 3 4 5 6,然后选择删除元素6,返回的链表为1 2 3 4 5 。 代码演示: typedef struct ListNode ListNode;List…

Linux文件 profile、bashrc、bash_profile区别

Linux系统中,有三种文件 出现的非常频繁,那就是 profile、bash_profile、bashrc 文件。 1、profile 作用 profile,路径:/etc/profile,用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户…

学习刷题-12

3.22 hw机试【双指针】 Leetcode674 最长连续递增序列 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 双指针 一个慢指针一个快指针 慢指针记录递增子序列起点,快指针去寻找还在当前递增子序列的最后一…

C++例子

#include<iostream> using namespace std;//抽象类 //抽象cpu类 class CPU { public:virtual void calcuate()0; }; //抽象显卡类 class VideoCard { public:virtual void display()0; }; //抽象内存条类 class Memory { public:virtual void storage()0;};//电脑类 clas…

leetcode 150.逆波兰表达式求值

题目 思路 逆波兰表达式也是经典的栈的应用问题。 先说什么是逆波兰表达式&#xff08;也叫后缀表达式&#xff09; 我们习惯的是这样的表达式&#xff1a;1 2 / 3 ,这也叫中缀表达式。 但是对于计算机来说不好理解&#xff0c;当从左扫描到 2 的时候还需要再判断2后面是什…

损失函数篇 | YOLOv8更换损失函数之CIoU / DIoU / EIoU / GIoU / SIoU / WIoU

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…

vue2从基础到高级学习笔记

在实际的工作中,我常使用vue的用法去实现效果,但是你要是问我为什么这样写,它的原理是啥就答不上来了。对vue的认知一直停留在表面,写这篇文章主要是为了理清并弄透彻vue的原理。 学习目标 1 学会一些基本用法的原理 2 弄懂vue核心设计原理 3 掌握vue高级api的用法 一 vue…

基于springboot+vue的小型诊疗预约平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

蓝桥杯-单片机基础8——上下位机的串口通信设置(附小蜜蜂课程代码)

蓝桥杯单片机组备赛指南请查看这篇文章&#xff1a;戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写&#xff0c;代码可直接在比赛开发板上使用。 型号&#xff1a;国信天长4T开发板&#xff08;绿板&#xff09;&#xff0c;芯片&#xff1a;IAP15F2K6…

知识管理平台企业要怎么用?看完你就会了

在信息爆炸的现代社会&#xff0c;知识管理的重要性不言而喻。一个强大的知识管理平台&#xff0c;可以让团队分享和查找知识变得更容易&#xff0c;提升知识管理效率和整体工作效率。本文将引导你了解如何有效地利用知识管理平台。 1.确定目标和需求 在使用知识管理平台之前…