当前位置: 首页 > article >正文

两数和的目标 python (初学者vs程序员)

题目描述

1)给定一个整数列表,在列表中,从前向后查找两个元素使其相加之和等于目标数,并返回两个整数在列表中的下标。如果没有符合条件的数字,输出False,本题假设题目的解唯一。‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
2)注意:分两次input()分别读入整数列表和目标数;输出采用列表形式。例如,依次输入整数列表 [2,7,11,15] 和9,输出[0, 1]。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
3)输入代码并提交解答。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

注意:提交代码时请删除input()函数中的参数,否则会出现错误。

直接暴力(初学者爱用的for循环)

numslist = eval(input())
target = int(input())
 
flag = 0
for i in range(len(numslist)):
    for j in range(i + 1, len(numslist)):
        if numslist[i] + numslist[j] == target:
            print("[{}, {}]".format(i, j))
            flag = 1
if flag == 0:
    print("False")  

通过了

直接两层for循环一个一个试,直到找到target

进阶(程序员)

numslist = eval(input())
target = int(input())

dic = {}
res = []
for i in range(0,len(numslist)):
    n = target - numslist[i]

    if n not in dic:
        dic[numslist[i]] = i
    else:
        res = [dic[n],i]
        break

if len(res):
    print(res)
else:
    print("False")

利用字典dic保存数字num。遍历查找数字num与目标数target的“互补数”时只需查找dic[target - num]是否存在即可。

时间复杂度:O(n),因为dic的存取开销为O(1)。

初学者vs程序员

这两段代码是用来寻找数组中两个元素的和等于给定目标值的索引对。

第一段代码使用了嵌套的循环来遍历所有可能的索引对,并判断元素的和是否等于目标值。如果找到了满足条件的索引对,则输出该索引对;如果没有找到,输出"False"。

第二段代码使用了字典来存储已遍历过的元素及其索引。在遍历数组时,每次计算当前元素与目标值之间的差值,并检查差值是否存在于字典中。如果存在,则说明找到了满足条件的索引对,将对应的索引存入结果列表并结束循环。如果遍历完数组后仍未找到满足条件的索引对,则输出"False"。

两段代码的主要区别在于实现的方式不同。第一段代码使用了嵌套的循环,时间复杂度为O(n^2),而第二段代码利用字典的查找特性,时间复杂度为O(n)。因此,第二段代码的效率更高。


http://www.kler.cn/a/108402.html

相关文章:

  • 前端知识点---this的用法 , this动态绑定(Javascript)
  • 【数据分享】全国农产品成本收益资料汇编(1953-2024)
  • C++静态成员
  • C++ 判断语句的深入解析
  • HarmonyOS本地存储-Preferences(用户首选项)的使用
  • 「QT」文件类 之 QDataStream 数据流类
  • 使用dirhunt无需暴力破解即可扫描Web目录
  • react动态插入样式
  • 基本微信小程序的外卖点餐订餐平台
  • 数据结构【DS】B树
  • Photoshop使用笔记总目录
  • php使用阿里云文本内容检测openapi-sdk-php
  • MAC安装stable diffusion
  • ES Module 认识
  • 给VSCode插上一双AI的翅膀
  • ThinkPHP6 多应用模式之验证码模块的配置与验证
  • Java中级面试题记录(四)
  • ThinkPad电脑HDMI接口失灵如何解决?
  • 工具箱:【1】简单的自动部署
  • 安全和便捷:如何将运营商二要素API应用于实名制管理中
  • 网络安全—小白自学
  • 数据结构和算法(15):排序
  • 【QT】对象树
  • 14. 机器学习 - KNN 贝叶斯
  • React-快速搭建开发环境
  • openpnp - 汇川伺服和冰沙主板的连接