【LeetCode】大厂面试算法真题回忆(36)--相同数字的积木游戏

devtools/2025/3/26 0:31:15/

题目描述

小华和小薇一起通过玩积木游戏学习数学。他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。

小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离。

小薇请你帮忙替她解决这个问题。

输入描述

第一行输入为N,表示小华排成一排的积木总数。

接下来N行每行是一个数字,表示小花排成一排的积木上数字。

其中,取值范围是0 <= 积木上的数字 < 10^9,1 <= 积木长度 <= 10^5

输出描述

相同数字的积木的位置最远距离;如果所有积木数字都不相同,请返回-1。

示例描述

示例一

输入:

5
1
2
3
1
4

输出:

3

示例二

输入:

2
1
2

输出:

-1

解题思路

  1. 创建索引字典,key为积木块上面的数字,value为积木的顺序位置。
  2. 初始化索引字典。
  3. 遍历索引字典中所有的key
    • 如果一个数字上有多个位置,计算最远的位置距离。
    • 获取最远距离。
  4. 返回最远距离,如果都不相同,则返回-1。

解题代码

from collections import defaultdictdef solve_method(nums):idx = defaultdict(list)for i in range(len(nums)):idx[nums[i]].append(i)ans = -1for k in idx.keys():if len(idx[k]) > 1:ans = max(ans, idx[k][-1] - idx[k][0])return ansif __name__ == '__main__':assert solve_method([1, 2, 3, 1, 4]) == 3assert solve_method([1, 2]) == -1
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7583da5d4f0145f5a4bcf96db1b6e7b4.png#pic_center)

http://www.ppmy.cn/devtools/170632.html

相关文章

redis操作

1.redis的客户端也有很多种形态 第一种&#xff1a;自带了命令行客户端 在redis安装中讲的 redis-cli //运行redis客户端命令行&#xff1b;链接本地服务器 redis-cli -h 127.0.0.1 -p 6379 //链接其他服务器上的redis服务端&#xff1b;因为是演示&#xff0c…

APM 仿真遥控指南

地面站开发了一段时间了&#xff0c;由于没有硬件&#xff0c;所以一直在 APM 模拟器中验证。我们已经实现了 MAVLink 消息接收和解析&#xff0c;显示无人机状态&#xff0c;给无人机发送消息&#xff0c;实现一键起飞&#xff0c;飞往指定地点&#xff0c;降落&#xff0c;返…

Android BLE 权限管理

前言 android 权限一直是比较活跃的 在蓝牙权限这一块又分新版和旧版 新版权限 android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT旧版权限如9.0以下 Manifest.permission.A…

设计模式之责任链模式:原理、实现与应用

引言 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合。责任链模式通过将多个处理对象连接成一条链&#xff0c;使得请求沿着链传递&am…

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图&#xff08;可视&#xff09;模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…

Qt下集成大华网络相机SDK示例开发

文章目录 前言一、下载并集成大华网络相机SDK二、示例实现功能三、示例完整代码四、下载链接总结 前言 近期在Qt环境下进行大华网络相机的使用&#xff0c;发现官网下载的SDK中提供的示例没有Qt的demo&#xff0c;通过学习其提供的MFC示例代码&#xff0c;我在这里也实现了一个…

Elasticsearch 在航空行业:数据管理的游戏规则改变者

作者&#xff1a;来自 Elastic Adam La Roche 数字化客户体验不再是奢侈品&#xff0c;而是欧洲航空公司必不可少的需求。它推动了客户满意度&#xff0c;提升了运营效率&#xff0c;并创造了可持续的竞争优势。随着行业的不断发展&#xff0c;优先投资前沿数字技术和平台的航空…

prometheus 添加alertmanager添加dingtalk机器人告警

1、dingtalk创建机器人,目前我们采用加白名单的方式校验 2、定位到如下图 test结果如下