मान लीजिए हमारे पास एक सरणी nums है जहां सभी तत्व यूनिक हैं और अलग-अलग छोटी सरणियों वाली एक और सरणी pieces है। हमें जांचना है कि क्या हम pieces में सरणियों को किसी भी क्रम में जोड़कर मुख्य सरणी nums प्राप्त कर सकते हैं या नहीं। लेकिन हमें pieces[i] में मौजूद तत्वों को पुनः क्रमबद्ध करने की अनुमति नहीं है।
इसलिए, यदि इनपुट है: nums = [5,1,12,36,2,47,6], pieces = [[2,47,6],[12,36],[1],[5]], तो आउटपुट True होगा क्योंकि हम उन्हें इस क्रम में जोड़ सकते हैं [[5], [1], [12,36], [2,47,6]] मुख्य सरणी प्राप्त करने के लिए।
हल करने के चरण
- temp := एक नई सूची
- pieces में प्रत्येक p के लिए:
- यदि p[0], nums में मौजूद नहीं है, तो false वापस करें
- l := p का आकार
- indx := nums में p[0] का इंडेक्स
- यदि nums का सबएरे इंडेक्स indx से indx+l-1 तक, p के समान नहीं है, तो false वापस करें
- अन्यथा, p को temp के बाद जोड़ें
- यदि nums का आकार, temp के आकार के समान है, तो true वापस करें
- अन्यथा, false वापस करें
उदाहरण (Python)
def solve(nums, pieces):
temp = []
for p in pieces:
if p[0] not in nums:
return False
l = len(p)
indx = nums.index(p[0])
if nums[indx:indx+l] != p:
return False
else:
temp.extend(p)
if len(nums) == len(temp):
return True
else:
return False
nums = [5, 1, 12, 36, 2, 47, 6]
pieces = [[2, 47, 6], [12, 36], [1], [5]]
print(solve(nums, pieces))
इनपुट
[5,1,12,36,2,47,6], [[2,47,6],[12,36],[1],[5]]
आउटपुट
True