মান लीজিয়ে আমাদের একটি 2D অ্যারে আছে যার নাম groups এবং আরেকটি অ্যারে nums। আমাদের চেক করতে হবে কিনা আমরা nums অ্যারেতে থেকে nটি ডিজয়েন্ট (disjoint) সাব-অ্যারে বাছাই করতে পারি যাতে i-তম সাব-অ্যারে groups[i]-এর সমান হয় (০-ইন্ডেক্সড), এবং যদি i > 0 হয়, তবে (i-1)-তম সাব-অ্যারে nums-এ i-তম সাব-অ্যারের আগে দেখায়।
যেমন, ইনপুট হলে groups = [[2,-2,-2],[4,-3,0]] এবং nums = [1,-1,0,2,-2,-2,4,-3,0], তবে আউটপুট হবে true কারণ group[0] nums-এর ইন্ডেক্স ৩ থেকে ৫ পর্যন্ত পাওয়া যায় এবং group[1] ইন্ডেক্স ৬ থেকে ৮ পর্যন্ত।
সমাধানের ধাপসমূহ
i := 0groups-এ 존재하는 প্রতিটিgrpএর জন্য, নিচের কাজটি করুন:j := iথেকেnumsএর সাইজ - ১ পর্যন্ত লুপ চালান:যদি
nums[j : j + len(grp)]সাব-অ্যারেটিgrp-এর সমান হয়, তবে:i := j + len(grp)লুপ থেকে বের হয়ে যান
অন্যথায়,
Falseরিটার্ন করুন
Trueরিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:
def solve(groups, nums):
i = 0
for grp in groups:
for j in range(i, len(nums)):
if nums[j:j+len(grp)] == grp:
i = j + len(grp)
break
else:
return False
return True
groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))ইনপুট
[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]
আউটপুট
True