📅  最后修改于: 2023-12-03 15:28:38.226000             🧑  作者: Mango
本题是门计算机科学和工程入门考试(GATE)2019年的第47题。该题目需要考生实现一个特定的算法,并对算法的最坏情况运行时间进行分析。
给定一个整数数组 A[1...n]
,请编写一个算法,找到两个不同的下标 i
和 j
,使得 $A[i]=A[j]$ 且 $j-i$ 最小。如果没有满足条件的下标对,则返回 None
。
假设给定的数组为 [3, 2, 1, 2, 3]
,则该算法应该返回 (1,4)
,因为 A[1]=A[4]=2
,且 $4-1=3$ 为最小的下标跨度。如果数组为 [1, 2, 3, 4, 5]
,则不存在满足条件的下标对,应该返回 None
。
请将你的算法写成 Python 3 函数,并按照下面的模板进行编写。
def find_min_distance(A: List[int]) -> Optional[Tuple[int, int]]:
"""
找到指定数组中两个值相等的元素下标,且它们的跨度最小。
Args:
A: 给定的整数数组。
Returns:
如果存在满足条件的下标对,则以元组的形式返回它们的值,否则返回 `None`。
Examples:
>>> find_min_distance([3, 2, 1, 2, 3])
(1, 4)
>>> find_min_distance([1, 2, 3, 4, 5])
None
"""
# 在这里写下你的代码
请注意以下几点: