用python手刃Leetcode(1):两数之和【简单题】

【产品经理修炼之道】- 优惠券系统从入门到精通(一) 为了满足企业的优惠券业务,优惠券系统一般需要包含哪些功能?这篇文章里,作者从架构、功能等维度做了拆解,一起来看看吧。此部分主要讲解为满足公司优惠券业务,需要优惠券系统必须包含哪些功能,即优惠券架构图。 阅读详情
前言

博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。
`
同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏除了尽量使用多种解法给出每道题的python3解答代码之外,还会记录下自己在做题过程中的一些收获和思考。便于以后复习查阅。

题目

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

示例:

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

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

暴力解法

首先不管三七二十一,利用暴力解法来尝试。

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        renum = []
        n = len(nums)
        for i in range(n):
            for j in range(i+1,n):
                if nums[i]+nums[j] == target:
                    renum.append(i)
                    renum.append(j)
                    break   
        return(renum)

【备注】:对于一个函数来说,程序在执行return()后会自动停止,即在函数中,return有break的功能。所以,以上代码可以做一个小优化:在break处直接写return()函数。就像这样:

……
if nums[i]+nums[j] == target:
	renum.append(i)
	renum.append(j)
	return(renum) #此处直接用return代替break

但是,这种暴力解法由于时间复杂度太高,一般是没有办法来通过leetcode的,会报错如下:
这里写图片描述

方法二:建立哈希表进行求解。
class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dic = {}
        for i, num in enumerate(nums):
            if num in dic:
                return [dic[num], i]
            else:
                dic[target - num] = i

这个解法的思路是:首先把原来的List建成一个字典,然后新建另一个空字典,每次在字典中存储时,dic的key:target - num,value:原List组成的字典值对应的索引。如果检测到某个nums中的值已经存在于新建的字典中,那么证明可以组成一个target值,这时返回此刻遍历到的索引与dict中记录下来的索引。

方法三:利用python切片。
class Solution:
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            if target-nums[i] in nums[i+1:]:
                return [i,nums.index(target-nums[i],i+1)]
解题收获:
1、enumerate()函数的使用

enumerate()函数可以把一个List按照索引从小到大的顺序组成一个字典。
python enumerate用法总结

2、python中定义Class的模板
Multisim14使用教程详尽版--(2025最新版) 摘要:本文详细介绍了Multisim14电路仿真软件的功能和使用方法。主要内容包括:1)主流电路仿真软件比较,突出Multisim在教学、竞赛设计中的优势;2)软件界面说明,涵盖菜单栏、工具栏、元器件库和仪器仪表;3)18类元器件分类详解及其使用操作;4)15种仪器仪表的原理和应用场景;5)电路原理图设计与仿真流程;6)基本电路分析方法(直流静态工作点分析、交流分析等)。文章还提供了硬件工程师笔试面试相关资源链接,涵盖电阻、电容、三极管等器件知识及AD软件操作指南。通过系统讲解,帮助用户掌握Multisim 阅读详情

相关推荐

华为S5720交换机堆叠配置

S5720交换机,做下堆叠,两条线,交叉互联(即A交换机23口连到B交换机24口,A交换机24口连接B交换机23口)。PS:S5720堆叠可基于电口或者光口做,本次测试基于电口。 SWA配置 # 改名 [Huawei]sysname SWA # 最好先shutdown接口 [SWA]interface GigabitEthernet 0/0/23 [SWA-GigabitEthernet0/0/23]shutdown [SWA-GigabitEthernet0/0/23]interface G.

Markdown 6340

用Python实现两数之和(python)

用Python实现两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, ...

南有芙蕖 1万+

联想服务器ThinkSystemRAID阵列设置教程

关注我不迷路,全是干货! 以联想ThinkSystemSR530为例子进行示范。 开机点按【F1】 点击——【UEFI设置】 依次点击——【系统设置】——【存储】 点击——【RAID卡】 PS:本次服务器配置的是730-8i 阵列卡,按实际情况选中需要设置的阵列卡即可。 点击——【Main Menu】 点击——【Configuration Management】 点击——【Create Virtual Drive】 点击——【Select RAID Leve..

littlelotusK的博客 2万+

两数之和(Python)

此题目给定一个整数数组和目标值,旨在找出数组中两数之和等于目标值的组合,并返回其索引。从直观的暴力解法,以双层循环逐一比对,虽易于理解却面临效率瓶颈;到巧用哈希表的数据结构优化策略,以空间换时间,实现高效的查找与匹配。

欢迎学习交流! 1692

关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

最近在做的一个项目,定制了一块STM32F407ZG的工控板,工控板载4个485接口全部都是只能接收数据,不能对外发送数据。1.接线不正确:接线不正确导致485收发出现问题。 2.程序端口初始化问题:控制光耦隔离的输入脚IO的初始化和置位状态有问题。 3.GPIO复用问题:控制对应串口的GPIO不是正点原子默认的GPIO,而是经过复用的其他IO,复用问题。 4.程序设置与485E芯片收发模式不对应:对于使能引脚的电平要根据光耦的输出情况确定输入IO与RE的关系,可能模式没有对应。 5.光耦隔离或者SP485

weixin_45862642的博客 2978

DEAP数据集实战:用PyTorch搭建DNN/CNN脑电情绪识别模型(附完整代码)

本文详细介绍了如何使用PyTorch搭建DNN和CNN模型对DEAP数据集进行脑电情绪识别。从数据预处理到模型架构设计,再到训练优化和部署,提供了完整的实战指南和代码示例,帮助研究者快速掌握脑电信号识别技术。

k8l9m0n的博客 392

【python】两数之和 python实现(详细讲解)

👉博__主👈:米码收割机👉技__能👈:C++/Python语言👉公众号👈:测试开发自动化【获取源码+商业合作】👉荣__誉👈:阿里云博客专家博主、51CTO技术博主👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。

测试开发自动化 4554

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1039

python 算法 两数之和 的多种解法

两数之和问题是LeetCode上的一道经典算法题,也是面试中常见的问题。题目要求在一个整数数组中找到两个数,使它们的和等于一个特定的目标值,并返回这两个数的下标。

qq_35067920的博客 3971

RK3568平台开发系列讲解(UBOOT篇)u-boot启动流程

U-Boot(Universal Bootloader)是一种开源的引导加载程序,广泛用于嵌入式系统中。它的主要功能是初始化硬件设备,加载操作系统内核,并将控制权交给操作系统。U-Boot的启动流程可以分为多个阶段,以下是典型的U-Boot启动流程:

内核笔记 1234

Docker:安装Apache Pulsar 消息队列的详细指南

本文详细介绍了Apache Pulsar的Docker化安装部署方法,包括单节点Pulsar服务和管理界面Pulsar Manager的安装配置。通过Docker命令快速搭建Pulsar环境,并演示了租户和命名空间的基础管理操作。同时提供了Spring Boot项目与Pulsar集成的完整方案,从依赖配置到客户端初始化,为开发人员构建实时消息系统提供实用参考。

木头 2209

python-[1]两数之和

[1]两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,

chengle的博客 1049

Power EM与Signal EM解决办法与原理分析

1.面对power EM,首先检查missing via,补全via,还可以加宽,加密局部power mesh,一些power IO出pin有power EM问题,可以叠加多层线和垂直方向补power形成网络降低并联电阻和提供更多电流通路解决,这种方法还可以降低ir drop。3.先进工艺有一个via ladder的方法可以解决power/signal em问题,clock cell出pin绕线或者power rail连接power stripe通过搭梯子的方式连接,原理还是分流。

m0_61544122的博客 4747

用python手刃Leetcode(7):反转整数【简单题】

前言 博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。 ` 同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏...

u013044310的博客 5037

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

用python手刃leetcode(58):最后一个单词的长度【简单题】

不调用任何python包版本 首先,为了理解算法思想,先不调用任何函数手动撸个复杂的,思路如下:首先去除掉字符串末尾的空格:倒着遍历,判断是空格就把字符串长度减一,知道遇到单词。接着从头开始遍历,遇到空格就把start指针移在该空格后的第一个单词上。知道到了最后一个单词的尾字母。最后返回n-start(n本来就比末尾索引大一,所以不需要加一了) class Solution: de...

u013044310的博客 692

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

用python手刃Leetcode(2):两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 数据结构是计算机科学必须掌握的一门学问,之前很多的教材都是用C语

u013044310的博客 396

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

leetcode两数相加python_用python手刃Leetcode(2):两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)题目分析:1)这道题没有说明链表的长度相同,所以需要考虑链表长度不同的情况。2)这道题有一个条件:你可以假设除了数字 0 之外,这两个...

weixin_35905707的博客 318

用python手刃Leetcode(9):回文数【简单题】

前言 博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。 ` 同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏...

u013044310的博客 928

python 单词长度_用python手刃leetcode(58):最后一个单词的长度【简单题】

前言博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。`同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏除了尽量使用多种解法给出每道题的p...

weixin_39889544的博客 204

1. 两数之和

【代码】1. 两数之和。

garrulousabyss的博客 343

Datawhale LeetCode腾讯精选50——Task02

LeetCode07:整数反转 Given a 32-bit signed integer, reverse digits of an integer. Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For this problem, assume that your func

probie的博客 185

Python 基础算法——两数之和

常见的三种算法分别是:暴力法、哈希表和排序 + 双指针法。

Tony_33的博客 1628

【Leetcode01】两数之和(Python实现)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1] 解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1]。

qq_37397652的博客 3678

力扣刷题 1. 两数之和

力扣 1. 两数之和题目第一次回答结果优化后代码结果分析总结 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0,

weixin_43103920的博客 956

算法和数据结构解析:2 - 数组问题

在程序设计中,为了处理方便,常常需要把具有相同类型的若干元素按有序的形式组织起来,这种形式就是数组(Array)。 数组是程序中最常见、也是最基本的数据结构。在很多算法问题中,都少不了数组的处理和转换。 对数组进行处理需要注意以下特点: 首先,数组会利用 索引 来记录每个元素在数组中的位置,且在大多数编程语言中,索引是从 0 算起的。我们可以根据数组中的索引,快速访问数组中的元素。事实上,这里的索引其实就是内存地址。 其次,作为线性表的实现方式之一,数组中的元素在内存中是连续存储的,且每个元素占用

喜欢历史的码农 849

当面试官让你写一道two sum,究竟是想考什么?

点击上方"蓝字",右上角选择“设为星标”周一至周五早8点半!精品技术文章准时送上!公众号后台回复 “学习” ,获取作者独家秘制学习套餐 本文转自公众号:程序员...

石杉的架构笔记 941
上一篇: skimage包的小优化(2):模仿remove_small_objects()函数保留图片中连通域最大的区域
下一篇: Deep Face Recognition论文翻译
东写西读李老湿
东写西读李老湿 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄13年 481粉丝 73原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值