两数之和-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第76讲。

两数之和,本题是2022年1月22日举办的第13届蓝桥杯青少组Python编程选拔赛真题编程部分第4题。题目要求对于给定的一组正整数和目标值,编程找出两个正整数,要求其和离目标值最接近。

先来看看题目的要求吧。

一.题目说明

编程实现:

给出一组正整数数据和一个正整数(目标值),从这组正整数中找出两个数,使这两个数相加后的和,小于等于目标值并且离目标值最接近,然后将两个数的和输出。

如:正整数数据为[9, 4, 3, 5],目标值为10,其中正整数数据中4和3、4和5、3和5 的和都小于目标值10,但离目标值最接近的两个数是4和 5,其和为9。

输入描述:

第一行输入一组长度大于 3 个正整数的数据(正整数 < 10000),正整数之间以一个英文逗号隔开

第二行输入一个正整数 n(1 < n < 19997),表示目标值

输出描述:

输出一个整数。

如果正整数数据中存在小于等于目标值并且离目标值最接近的两个数,则输出这两个数的和;

如果正整数数据中不存在这样的两个数,即正整数数据中任意两个数的和都超过了目标值,则输出-1

样例输入:

9,4,3,5

10

样例输出:

9

二.思路分析

这是一道简单的算法题,涉及的知识点包括循环、条件语句和列表等。

对于本题,最简单的方法就是暴力枚举,就是将所有的组合列举出来并求和,然后和目标值进行比较,在小于等于目标值的和中,找到最大的那个和。

计算两个数的组合之和,可以采取如下两种方式:

  • 嵌套循环

  • 使用combinations()函数

只是,使用这两种方法的时间复杂度都是O(n2),如果要降低时间复杂度,可以使用双指针算法。

所谓双指针是指在遍历列表的过程中,不是使用单个指针进行访问,而是使用两个指针进行访问,从而达到相应的目的。

最简单的双指针是对撞指针,它指的是使用两个指针left、right分别指向列表第一个元素和最后一个元素,然后left指针不断递增,right不断递减,直到两个指针的值相撞(即 left== right),或者满足其他要求的特殊条件为止。

图片

双指针利用了区间单调性的性质,可以将时间复杂度降到 O(n)。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们使用三种方法来编写程序:

  • 枚举算法

  • 使用combinations()函数

  • 双指针算法

1. 枚举算法

根据前面的思路分析,我们使用嵌套循环编写代码如下:

图片

代码不多,说明两点:

1). res表示最终的结果,初始值为-1,如果不存在小于target的情况,就直接输出-1;

2). 注意i和j的范围,前者从0开始到len(nums) - 1,后者从i+1开始,一直到最后一个列表项。

2. 使用combinations()函数

combinations()函数可以帮我们生成所有可能的两个数的组合,原来的两层循环可以简化为一层,对应的代码如下:

图片

要使用combinations()函数,必须先导入。

3. 双指针算法

根据前面的思路分析,编写代码如下:

图片

代码稍微要复杂一点,简单说明两点:

1). 使用双指针算法,要确保nums列表是有序的;

2). 当left < right,计算两数之和,并不断调整left和right指针,当两个指针撞到一起了,循环结束。

至此,整个程序就全部完成了,你可以输入不同的数字来测试效果啦。

四.总结与思考

本题代码在10行左右,涉及到的知识点包括:

  • 循环语句;

  • 列表操作;

  • 输入输出处理;

  • 组合函数;

本题代码不多,难度中等,关键点是要理解题目的意思,这里要寻找小于等于target的两数和,并且是最接近target的。小于等于target的两数和可能有很多个,所谓最接近target,就是在满足条件的两数和中找最大的。

在计算机编程中,最常用的算法就是暴力枚举,这也是计算机最擅长的事情。

但是,暴力枚举要将所有的情况都列举出来,随着数据规模的增加,时间复杂度会急剧增加。因此,我们需要寻找更聪明的枚举方法,根据不同的问题和场景,可以采取不同的优化策略,也就产生了各种不同的算法。

本题中的双指针算法就是一个非常好的优化技巧,在编程中会经常用到,比如字符串反转、判断回文数和快速排序等。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

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

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

相关文章

基恩士激光 速度 曝光等关系

一、基恩士 CtrlN 二、速度设置 计算扫描速度 曝光时间&#xff1a; 1:1 相机点间隔是0.025 &#xff0c;我们要扫描的图像也是1&#xff1a;1的话&#xff0c;速度可以为 采样周期我们设定为3K&#xff0c;假如我们的7000行就够了 速度V0.025&#xff08;线间隔&#xff0…

【python】OpenCV—Color Detection

学习来自 如何使用 OpenCV Python 检测颜色 import cv2 import numpy as npdef red_hsv(img, saveFalse):lower_hsv1 np.array([0, 175, 20])higher_hsv1 np.array([10, 255, 255])lower_hsv2 np.array([170, 175, 20])higer_hsv2 np.array([10, 255, 255])mask1 cv2.inR…

小家电增速超预期!赛盈分销谈市场发展机会,助力企业开拓新商机!

在家庭和商业场景的高需求下&#xff0c;小家电又成为了海外消费新宠。 Statista的数据显示&#xff0c;2023年全球小家电的市场规模达到了2430亿美元&#xff0c;预计未来的4年里市场年复合增长率为4.65%&#xff0c;到2028年市场规模将增长至3050亿美元。 特别是欧美和东南亚…

小短片创作-理论知识(四)

1、PBR材质基础参数 1.PBR材质的特征&#xff1a;BaseColor&#xff0c;Roughness&#xff0c;Metallic&#xff0c;Normal&#xff0c;Specular 2.BaseColor&#xff08;Albedo&#xff09;&#xff1a;不包含光照信息 3.Roughness&#xff08;粗糙度&#xff09;&#xff…

Ubuntu (18.04) _Mysql (8.0.X)设置密码强度

首先 查看是否有密码强度插件&#xff1a; SHOW PLUGINS; 如果没有&#xff0c;则安装 install plugin validate_password soname validate_password.so; 再次查看,会看到密码强度插件已开 其次 查看密码强度具体配置 show variables like validate_password%; validate…

JVM思维导图

帮助我们快速整理和总结JVM相关知识&#xff0c;有结构化认识和整体的思维模型 JVM相关详细知识和面试题

农业大模型:关键技术、应用分析与发展方向

&#xff3b;目的/意义&#xff3d; 近年来&#xff0c;人工智能在农业领域的应用取得了显著进展&#xff0c;但仍面临诸如模型数据收集标记困难、模型泛化能力弱等挑战。大模型技术作为近期人工智能领域新的热点技术&#xff0c;已在多个行业的垂直领域中展现出了良好性能&…

【EFK日志系统】在kibana操作索引模板、生命周期、管道等

kibana界面设置 管道生命周期索引模板索引模式注意事项 之前已经搭建好了es集群、es-head信息面板、kibana、filebeat和metricbeat&#xff0c;但是其中的索引模板等信息你在kibana界面暂时看不到 接下来我们设置索引模式、索引模板、生命周期、管道限制等&#xff0c;简单写一…

商用未来何时来?软银揭示量子计算商业应用现状

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨沛贤/浪味仙 排版丨沛贤 深度好文&#xff1a;3000字丨10分钟阅读 摘要&#xff1a;软银&#xff08;SoftBank&#xff09;先进技术研究所正在积极推进量子计算商业应用&#xff0c;借助与…

使用python优雅的将PDF转为Word

使用python优雅的将PDF转为Word 先装这个优雅的库 pip install pdf2docx然后运行下面优雅的代码&#xff0c;将pdf路径和docx路径修改 from pdf2docx import Converter # path pdf_file C:\\Users\\phl\\Desktop\\软件工程期末\\软件工程模拟试题5.pdf docx_file C:\\User…

HTTP/超文本传输协议(Hypertext Transfer Protocol)及HTTP协议通信步骤介绍和请求、响应阶段详解;

目录 一、HTTP/超文本传输协议 特点和功能 请求-响应模型 版本和扩展 安全性和加密 二、HTTP协议通信步骤介绍 三、请求、响应阶段详解 HTTP请求 HTTP响应 示例 一、HTTP/超文本传输协议 HTTP/超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;是…

对未知程序所创建的 PDF 文档的折叠书签层级全展开导致丢签的一种解决方法

对需要经常查阅、或连续长时间阅读的带有折叠书签的 PDF 文档展开书签层级&#xff0c;提高阅览导航快捷是非常有必要的。 下面是两种常用书签层级全展开的方法 1、 FreePic2Pdf 1 - 2 - 3 - 4 - 5 - 6&#xff0c;先提取后回挂 2、PdgCntEditor 载入后&#xff0c;直接保存…

如何快速的在线编辑pdf?6个软件让你轻松编辑pdf

如何快速的在线编辑pdf&#xff1f;6个软件让你轻松编辑pdf 在线编辑PDF文件是一项非常方便的任务&#xff0c;以下是六款让您轻松进行在线PDF编辑的软件&#xff1a; 嗨动PDF编辑器&#xff1a;这是一个功能强大的PDF编辑器&#xff0c;可以帮助您快速编辑PDF文档&#xff…

【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)

2024年心理学与现代化教育、媒体国际会议 2024 International Conference on Psychology and Modern Education and Media 【1】会议简介 2024年心理学与现代化教育、媒体国际会议即将召开&#xff0c;这是一场汇聚全球心理学、教育及媒体领域精英的学术盛宴。 本次会议将深入探…

当一个小白拿到了香橙派 AIpro

当一个小白拿到了香橙派 AIpro 最近看见了香橙派 AIpro这块AI算法板&#xff0c;作为一块与华为合作的国产算力板&#xff0c;引起了我强烈的好奇心&#xff0c;可作为一名从未使用过香橙派&#xff0c;也未曾深究过AI算法的“小白”&#xff0c;来看我是如何征服这块新的领域…

【机器学习】随机森林:深度解析与应用实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 随机森林&#xff1a;深度解析与应用实践引言1. 随机森林基础1.1 什么是随机森林…

谢宁DOE培训的课程大纲分享

谢宁DOE培训旨在深入讲解谢宁问题解决方法在质量管理中的重要作用&#xff0c;学会如何利用谢宁问题解决方法工具&#xff0c;在不中断生产过程的前提下&#xff0c;找出生产中碰到的复杂而顽固的问题的原因&#xff0c;从而彻底地解决问题。 【课程内容】 第一部分&#xff1…

K8S 证书过期不能使用kubectl之后,kubeadm 重新生成证书

查询证书过期时间 kubeadm certs check-expiration重新生成证书 # 重新生成所有证书 kubeadm certs renew all # 重新生成某个组件的证书 kubeadm certs renew 组件名称 如&#xff1a;apiserver生成新的配置 # 重新生成kubeconfig配置 kubeadm init phase kubeconfig # 重…

当新媒体运营开始说真话,这些道理你真的懂么?沈阳新媒体运营培训

运营新人&#xff0c;尤其是刚毕业、啥都不会的大学生&#xff0c;一定要认清的现实就是&#xff1a;虽然新媒体运营这个岗位门槛比较低&#xff0c;薪资也比较香&#xff0c;但绝不是养老型的工作。 平时大家还是很忙的&#xff0c;所以一定要摒弃学生思维&#xff0c;千万别…

男士内裤哪个品牌好一点?2024热门男士内裤推荐

男人的内裤保质期只取决于被别人看见的次数&#xff0c;如果某条内裤从未被别人看见过&#xff0c;那它永远都是你的新内裤。也就是说&#xff0c;只要穿着破内裤这尴尬的瞬间没被目击&#xff0c;男人就能永远和一条内裤在一起。 实际上如果长时间不更换男士内裤&#xff0c;…