मान लीजिए हमारे पास एक 2D ऐरे है जिसे groups कहा जाता है, और एक और ऐरे nums है। हमें यह जांचना है कि क्या हम nums ऐरे से n डिसजॉइंट सबऐरे चुन सकते हैं ताकि iवां सबऐरे groups[i] (0-इंडेक्स्ड) के बराबर हो, और यदि 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 के इंडेक्स 3 से 5 तक मौजूद है और group[1] इंडेक्स 6 से 8 तक nums में है।
समाधान के चरण
i := 0सेट करेंgroupsमें प्रत्येकgrpके लिए:jकोiसेnumsके आकार - 1 तक लूप करें:- यदि
numsका सबऐरे (इंडेक्सjसेj + grpके आकार तक)grpके समान है, तो:i := j + 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