समस्या
JavaScript फ़ंक्शन जो दो सरणियों, pushed और popped, को पहले और दूसरे आर्गुमेंट के रूप में लेता है। ये दोनों सरणियां अद्वितीय तत्वों से बनी होने की गारंटी हैं।
हमारे फ़ंक्शन को true वापस करना चाहिए यदि और केवल यदि यह शुरू में खाली स्टैक पर पुश और पॉप ऑपरेशन के अनुक्रम का परिणाम हो सकता है, अन्यथा false।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const pushed = [1, 2, 3, 4, 5]; const popped = [4, 5, 3, 2, 1];
तो आउटपुट होना चाहिए -
const output = true;
आउटपुट व्याख्या
हम निम्न अनुक्रम कर सकते हैं -
push(1), push(2), push(3), push(4), pop() -> 4, push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
उदाहरण
इसके लिए कोड होगा -
const pushed = [1, 2, 3, 4, 5];
const popped = [4, 5, 3, 2, 1];
const validateSequence = (pushed = [], popped = []) => {
let pushedIndex = 0;
let poppedIndex = 0;
const stack = [];
while (pushedIndex < pushed.length) {
if (stack[stack.length - 1] !== popped[poppedIndex]) {
stack.push(pushed[pushedIndex++]);
} else {
stack.pop();
poppedIndex += 1;
}
}
while (stack.length) {
if (stack.pop() !== popped[poppedIndex++]) {
return false;
}
}
return true;
};
console.log(validateSequence(pushed, popped));
आउटपुट
कंसोल में आउटपुट होगा -
true