在Python中从相邻的对中恢复数组的程序

在Python中从相邻的对中恢复数组的程序

假设我们有一个名为adPair的2D数组,大小为n-1,其中每个adPair[i]有两个元素[ui,vi],表示元素ui和vi在一个名为nums的数组中相邻,在nums中有n个唯一的元素。我们必须找到数组nums。如果有多个解决方案,请返回其中之一。

因此,如果输入如下adPair = [[3,2],[4,5],[4,3]],则输出将是[2,3,4,5]。

为了解决这个问题,我们将按照以下步骤进行 –

  • my_map:一个空映射,用于存储不同密钥的列表
  • 对于adPair中的每个对(a,b),执行以下操作
    • 在my_map [a]的末尾插入b
    • 在my_map [b]的末尾插入a
  • 对于my_map中的每个键a和值列表l,请执行以下操作
    • 如果l的大小与1相同,则
      • nums:一个带有两个元素(a,l [0])的列表
      • 从循环中退出
  • 对于范围为1到adPair大小-1的i,请执行以下操作
    • a,b:my_map [nums的最后一个元素]
    • 如果a与nums的倒数第二个元素相同,则
      • 在nums的末尾插入b
    • 否则,
      • 在nums的末尾插入a
  • 返回nums

示例

让我们看一下以下实现,以便更好地理解-

from collections import defaultdict
def solve(adPair):
   my_map = defaultdict(list)
   for a, b in adPair:
      my_map[a].append(b)
      my_map[b].append(a)

   for a, l in my_map.items():
      if len(l) == 1:
         nums = [a, l[0]]
         break
   for i in range(1, len(adPair)):
      a, b = my_map[nums[-1]]

      if a == nums[-2]:
         nums.append(b)
      else:
         nums.append(a)

   return nums

adPair = [[3,2],[4,5],[4,3]]
print(solve(adPair))

输入

[[3,2],[4,5],[4,3]]

输出

[2, 3, 4, 5]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程