程序以查找Python中相邻元素的索引的最小可能差
假设我们有一个数字nums的列表,可以说两个数字nums[i]≤nums[j]在没有数字的情况下是相邻的(nums[i],nums[j])。我们必须找到可能的最小值|j-i|这样nums[j]和nums[i]是相邻的。
因此,如果输入类似于nums=[1,-9,6,-6,2],则输出将为2,因为我们可以看到2和6相邻,并且它们彼此相距2个索引。
范例(Python)
让我们看下面的实现以更好地理解-
from collections import defaultdict
class Solution:
def solve(self, A):
indexes = defaultdict(list)
for i, x in enumerate(A):
indexes[x].append(i)
ans = len(A)
for row in indexes.values():
for i in range(len(row) - 1):
ans = min(ans, row[i + 1] - row[i])
vals = sorted(indexes)
for k in range(len(vals) - 1):
r1 = indexes[vals[k]]
r2 = indexes[vals[k + 1]]
i = j = 0
while i < len(r1) and j < len(r2):
ans = min(ans, abs(r1[i] - r2[j]))
if r1[i] < r2[j]:
i += 1
else:
j += 1
return ans
ob = Solution()
nums = [1, -9, 6, -6, 2]
print(ob.solve(nums))输入值
[1, -9, 6, -6, 2]输出结果
2
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短