दो स्टैक को एक निश्चित आकार के सरणी का उपयोग करके कुशलतापूर्वक लागू किया जा सकता है: स्टैक # 1 बाएं छोर से शुरू होता है और दाएं बढ़ता है, और स्टैक # 2 दाएं छोर से शुरू होता है और बाईं ओर बढ़ता है। क्या तीन स्टैक के लिए समान संभव है?
अधिक विशेष रूप से, क्या निम्नलिखित परिस्थितियों को देखते हुए तीन स्टैक लागू करना संभव है:
- आपके पास एक निश्चित आकार का सरणी है जो N ऑब्जेक्ट पकड़ सकता है।
- जब तक तीन स्टैक आकारों का योग <एन है, तब तक पुश () विफल नहीं होना चाहिए।
- दोनों पुश () और पॉप () संचालन को ओ (1) समय लेना चाहिए।
- सरणी के अतिरिक्त, आप केवल O (1) अतिरिक्त स्थान का उपयोग कर सकते हैं।
यहाँ समाधान के उदाहरण दिए गए हैं जो इन आवश्यकताओं को पूरा नहीं करते हैं:
- सरणी को 3 निश्चित भागों में विभाजित करना और स्टैक के लिए प्रत्येक भाग का उपयोग करना (2 का उल्लंघन)।
- ऊपर के समान लेकिन ढेर के बीच चल सीमाओं के साथ (उल्लंघन 3)।
- सरल लिंक्ड-लिस्ट आधारित कार्यान्वयन (4 का उल्लंघन)।
मैं गैर-तुच्छ एल्गोरिदम या असंभव साक्ष्य स्वीकार करूंगा भले ही वे सभी शर्तों को पूरा न करें (1) - (4) बिल्कुल, उदाहरण के लिए, एक एल्गोरिथ्म जहां पुश / पॉप टेक ओ (1) amortized समय, या जहां अतिरिक्त मेमोरी O (N) से छोटी है, जैसे O (लॉग एन)। या एक असंभव साक्ष्य जो दर्शाता है कि उदाहरण के लिए, प्रति पुश / पॉप में सरणी के 5 से कम तत्वों तक पहुंच असंभव है।