1. 两数之和

1. 两数之和

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

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

你可以按任意顺序返回答案。
在这里插入图片描述

一、python-暴力与哈希

import cProfile
def twosum1(num_list,target):#暴力遍历
    for i in range(len(num_list)):
        res=target-num_list[i]
        if res in num_list[i+1:]:#从列表num_list中的第i+1个元素开始,一直到列表的末尾
            print("[%d,%d]"%(i,num_list[i+1:].index(res)+i+1))
def twosum2(num_list,target):
    hashtable=dict()
    for i,num in enumerate(num_list):#在每次迭代中,enumerate()函数会返回一个元组,其中第一个元素是当前元素的索引(从0开始),第二个元素是当前元素的值
        if target - num in hashtable:
            print("[%d,%d]"%(hashtable[target-num],i))
        else:
            hashtable[num]=i#将键为num,值为i的键值对添加到哈希表hashtable中


if __name__=='__main__':
    numbers = input("nums=").split()
    num_list = [int(x) for x in numbers if x.isdigit()]
    #这里要注意要保证列表中数据格式不是str而是int
    target = input("target=")
    target=int(target)#同时要保证int格式,int要与int格式的数据执行加法

    cProfile.run('twosum1(num_list, target)')#cProfile 模块用于执行代码的性能分析。它会生成一个分析报告,显示函数调用次数、执行时间和内存占用等信息
    #cProfile.run('twosum2(num_list, target)')


二、运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、哈希图解

在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淅淅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值