#105. 数组最大跨度

    ID: 105 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>codingbatArray-3gesp5STL哈希

数组最大跨度

数组最大跨度

题目背景

聪聪最近在研究数组的特性。他发现数组中相同元素的出现位置有时会很有趣,于是他定义了一个新的概念——“跨度”。

题目描述

考虑数组中某个值最左边和最右边出现的位置。我们称这两个位置之间(包含两端)的元素数量为“跨度”。如果一个值只出现一次,其跨度为 11。返回给定数组中找到的最大跨度。(效率不是优先考虑的因素。)

输入格式

输入以如下格式从标准输入中给出。

一行,包含若干个整数,表示数组的元素。这些整数之间用空格分隔。

输出格式

输出以如下格式输出到标准输出中。

一个整数,表示数组中找到的最大跨度。

样例

1 2 1 1 3
4
1 4 2 1 4 1 4
6
1 4 2 1 4 4 4
6

样例解释

样例 1: 对于数组 [1, 2, 1, 1, 3]

  • 11 最左边出现在索引 00,最右边出现在索引 33。跨度为 30+1=43 - 0 + 1 = 4
  • 22 最左边出现在索引 11,最右边出现在索引 11。跨度为 11+1=11 - 1 + 1 = 1
  • 33 最左边出现在索引 44,最右边出现在索引 44。跨度为 44+1=14 - 4 + 1 = 1。 最大跨度为 44

样例 2: 对于数组 [1, 4, 2, 1, 4, 1, 4]

  • 11 最左边出现在索引 00,最右边出现在索引 55。跨度为 50+1=65 - 0 + 1 = 6
  • 44 最左边出现在索引 11,最右边出现在索引 66。跨度为 61+1=66 - 1 + 1 = 6
  • 22 最左边出现在索引 22,最右边出现在索引 22。跨度为 22+1=12 - 2 + 1 = 1。 最大跨度为 66

样例 3: 对于数组 [1, 4, 2, 1, 4, 4, 4]

  • 11 最左边出现在索引 00,最右边出现在索引 33。跨度为 30+1=43 - 0 + 1 = 4
  • 44 最左边出现在索引 11,最右边出现在索引 66。跨度为 61+1=66 - 1 + 1 = 6
  • 22 最左边出现在索引 22,最右边出现在索引 22。跨度为 22+1=12 - 2 + 1 = 1。 最大跨度为 66

数据范围

每个测试用例的时间限制为 11 秒,内存限制为 10241024 KiB。