华为OD:跳房子I

2023-09-22 14:34:44

题目描述

跳房子,也叫跳飞机,是一种世界性的儿童游戏。

游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格

跳房子的过程中,可以向前跳,也可以向后跳。

假设房子的总格数是count,小红每回合可能连续跳的步教都放在数组steps中,请问数组中是否有一种步数的组合,可以让小红两个回合跳到最后一格?

如果有,请输出索引和最小的步数组合。

注意:

数组中的步数可以重复,但数组中的元素不能重复使用。
提供的数据保证存在满足题目要求的组合,且索引和最小的步数组合是唯一的。

输入描述

第一行输入为房子总格数count,它是int整数类型。

第二行输入为每回合可能连续跳的步数,它是int整数数组类型。

输出描述

返回索引和最小的满足要求的步数组合(顺序保持steps中原有顺序)

样例

输入
[1,4,5,2,2]
7
输出
[5, 2]
说明

输入
[-1,2,4,9,6]
8
输出
[-1, 9]
说明
此样例有多种组合满足两回合跳到最后,譬如:[-1,9],[2,6],其中[-1,9]的索引和为0+3=3,[2,6]的索和为1+4=5,所以索引和最小的步数组合[-1,9]

算法

如题目描述,即需要判断列表中是否存在两个元素的和等于目标值,如果有多个则返回其索引和最小的一对,这意味着需要遍历所有组合才行。

粗解

ls = list(map(int, input()[1:-1].split(',')))

tar = int(input())

minn = 999999999999999999999999999
lso = []
for i in range(len(ls)-1):
    for j in range(i+1, len(ls)):
        if ls[i] + ls[j] == tar:
            if i + j < minn:
                lso = [ls[i], ls[j]]
                minn = i+j
            break

print(lso)

优化

a = list(map(int, input()[1:-1].split(',')))
n = int(input())
m = len(a)
minn = 2 * n
ans1 = -1
ans2 = -1
for i in range(m): # 循环遍历第一个数
    for j in range(i + 1, m): # 寻找是否有数匹配
        if a[i] + a[j] == n and i + j < minn: # 记录答案
            ans1 = a[i]
            ans2 = a[j]
            minn = i + j
print(f"[{ans1}, {ans2}]")
更多推荐

Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用

文章目录1、官网简介2、在vue3中使用1)、需要导入vue3支持的版本插件2)、在mian.js里引入:3)、在组件中使用3、layout布局的计算逻辑4、gridLayout的属性该栅格系统目前对vue2的支持是最好的,vue3是需要用插件支持的,会在小节详细讲解。1、官网简介官网地址:https://madewi

python Sqlalchemy

简介SQLAlchemy是python中,通过ORM操作数据库的框架。它简化了应用程序开发人员在原生SQL上的操作,使开发人员将主要精力都放在程序逻辑上,从而提高开发效率。它提供了一整套著名的企业级持久性模式,设计用于高效和高性能的数据库访问。安装pipinstallSQLAlchemy连接数据(engine)任何SQ

Java性能调优工具“JRMC”的介绍

Java虚拟机(JVM)及垃圾收集器(GC)负责管理大多数的内存任务,但是Java应用系统中还是有可能出现内存泄漏。事实上,OOM之类的现象在大型项目中也是一个常见的问题。避免内存泄漏的第一步是要弄清楚它是如何发生的,然后对症下药。那究竟是什么导致了Java程序中的内存泄漏呢?难道Java虚拟机的垃圾收集器不应该管理未

开源日报 0824 | 构建UI组件和页面的前端工作坊

Storybook是一个用于构建UI组件和页面的前端工作坊,支持多种主流框架,提供丰富的插件,具有可配置性强和扩展性好的特点。storybookjs/storybookStars:79.9kLicense:MITStorybook是一个用于构建UI组件和页面的前端工作坊,可以独立地进行开发、测试和文档编写。它支持多种主

Nginx 配置错误导致漏洞

Nginx配置错误导致漏洞运行成功后,Nginx将会监听8080/8081/8082三个端口,分别对应三种漏洞。Mistake1.CRLF注入漏洞漏洞描述CRLF是”回车+换行”(\r\n)的简称,,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTPHeader与HTTPBody是用两个CRLF分隔的,

redis-操作带过期时间的key需保证操作的原子性

问题:先执行get获取值,判断符合条件再执行incr、decr操作。在临界缓存失效的情况下,会默认赋值当前key为永不过期的0,再执行加减法,导致程序异常。推荐解决方案:1、限制接口频率:先incr,执行后值为1,说明是第一次执行,需要额外设置过期时间,再判断是否超过当前接口频率限制(注意上述步骤不可调换顺序)2、使用

迷宫寻路:(深搜广搜)

迷宫寻路题目描述机器猫被困在一个矩形迷宫里。迷宫可以视为一个n×mn\timesmn×m矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。机器猫初始时位于(1,1)(1,1)(1,1)的位置,问能否走到(n,m)(n,m)(n,m)位置。输入格式第一行,两个正整数n,mn,mn,m。接

TVS二极管的小知识

TVS二极管的小知识文章目录TVS二极管的小知识1、工作原理2、TVS二极管参数详解3、选型指南4、TVS二极管选型注意事项1、工作原理TVS(TransientVoltageSuppressors)二极管,即瞬态电压抑制器,又称雪崩击穿二极管,是采用半导体工艺制成的单个PN结或多个PN结集成的器件。TVS二极管有单向

Java基于SpringBoot的会员制医疗预约服务系统,可作为毕业设计

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文章目录1简介2技术栈3系统分析3.1需求分析4系统总体设计4.1系统结构4.2数据库设计4.2.1数据库概念结构设计4.2.2数据库逻辑结构设计5系统

【Spring Boot】数据缓存Redis实现高并发 —— Redis入门

🌿欢迎来到@衍生星球的CSDN博文🌿🍁本文主要学习Redis的入门🍁🌱我是衍生星球,一个从事集成开发的打工人🌱⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者交流学习。💠我希望通过每一次学习,让更多读者了解我,也希望能结识更多志同

利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)

当需要从PDF文件中提取文本时,Python中的PyPDF2库是一个非常有用的工具。无论您是需要分析PDF文档中的内容还是需要在文档中搜索特定的信息,PyPDF2都可以帮助您轻松实现这些任务。在本文中,我们将探讨如何使用PyPDF2库提取PDF文件中的文本,并提供一些示例代码来帮助您入门。安装PyPDF2库首先,您需要

热文推荐