ধরুন আমাদের কাছে n-1 আকারের adPair নামক একটি 2D অ্যারে রয়েছে যেখানে প্রতিটি adPair[i] দুটি উপাদান রয়েছে [ui, vi] প্রতিনিধিত্ব করে যে ui এবং vi উপাদানগুলি nums নামক একটি অ্যারেতে সংলগ্ন, সংখ্যাগুলিতে n অনন্য উপাদান রয়েছে। আমাদের অ্যারের সংখ্যা খুঁজে বের করতে হবে। যদি একাধিক সমাধান থাকে, তাদের যেকোনো একটি ফেরত দিন।
সুতরাং, ইনপুট যদি adPair =[[3,2],[4,5],[4,3]] এর মত হয়, তাহলে আউটপুট হবে [2,3,4,5]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- my_map :=একটি খালি মানচিত্র যাতে বিভিন্ন কীগুলির জন্য তালিকা সংরক্ষণ করা যায়
- adPair-এ প্রতিটি জোড়ার (a, b) জন্য, করুন
- my_map[a] এর শেষে b ঢোকান
- my_map[b] এর শেষে একটি সন্নিবেশ করুন
- my_map-এ প্রতিটি কী a এবং মান তালিকা l-এর জন্য, করুন
- যদি l এর আকার 1 এর সমান হয়, তাহলে
- সংখ্যা :=দুটি উপাদান সহ একটি তালিকা (a, l[0])
- লুপ থেকে বেরিয়ে আসুন
- যদি l এর আকার 1 এর সমান হয়, তাহলে
- আমার জন্য রেঞ্জ 1 থেকে অ্যাডপেয়ারের আকার - 1, করুন
- a, b :=my_map[সংখ্যার শেষ উপাদান]
- যদি a সংখ্যার দ্বিতীয় শেষ উপাদানের সমান হয়, তাহলে
- সংখ্যার শেষে b ঢোকান
- অন্যথায়,
- সংখ্যার শেষে একটি ঢোকান
- রিটার্ন সংখ্যা
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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]