मान लीजिए हमारे पास संख्याओं का एक स्टैक है; हमें जांचना है कि स्टैक में मान युग्मवार क्रमागत (pairwise consecutive) हैं या नहीं। ये युग्म बढ़ते या घटते क्रम में हो सकते हैं। यदि स्टैक में विषम संख्या में मान हैं, तो शीर्ष तत्व युग्म से बाहर रह जाता है। और जांच के बाद मूल स्टैक की सामग्री बरकरार रहनी चाहिए।
इस समस्या को हल करने के लिए हम स्टैक पर तीन ऑपरेशन उपयोग कर सकते हैं: push, pop और जांचें कि स्टैक खाली है या नहीं।
उदाहरण के लिए, यदि stk = [5, 6, -4, -5, 12, 11, 6, 7, 22] है, तो आउटपुट True होगा क्योंकि शीर्ष तत्व 22 को हटाने के बाद, युग्म हैं [(5, 6), (-4, -5), (12, 11), (6, 7)] जो सभी क्रमागत हैं।
हल करने का तरीका
- temp := stk से तत्व निकालकर temp में push करें
- stk को खाली करें
- flag := True
- जब तक temp का आकार > 1:
- item_first, item_second := temp के शीर्ष दो तत्व निकालें
- यदि |item_first - item_second| ≠ 1, तो flag := False
- item_first और item_second को stk में push करें
- यदि temp का आकार 1 है, तो temp के शीर्ष को stk में push करें
- flag लौटाएं
उदाहरण कोड
def solve(stk):
temp = stk[::-1]
stk.clear()
flag = True
while len(temp) > 1:
item_first = temp[-1]
temp.pop()
item_second = temp[-1]
temp.pop()
if abs(item_first - item_second) != 1:
flag = False
stk.append(item_first)
stk.append(item_second)
if len(temp) == 1:
stk.append(temp[-1])
return flag
stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
print(solve(stk))
इनपुट
[5, 6, -4, -5, 12, 11, 6, 7, 22]
आउटपुट
True