程序以查找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

以上是 程序以查找Python中相邻元素的索引的最小可能差 的全部内容, 来源链接: utcz.com/z/334605.html

回到顶部