您的位置:首页 > 文旅 > 旅游 > 代码生成器手机版下载_找平面设计师网站_网络营销工具与方法_福州短视频seo服务

代码生成器手机版下载_找平面设计师网站_网络营销工具与方法_福州短视频seo服务

2025/4/1 7:26:34 来源:https://blog.csdn.net/zkw54334/article/details/146412678  浏览:    关键词:代码生成器手机版下载_找平面设计师网站_网络营销工具与方法_福州短视频seo服务
代码生成器手机版下载_找平面设计师网站_网络营销工具与方法_福州短视频seo服务

题目描述

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

小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com