सरणी और सूचियों की बुनियादी बातों में महारत हासिल करने के बाद भी, इन डेटा संरचनाओं से संबंधित समस्याओं को हल करना कभी-कभी भारी लग सकता है। डेटा संरचनाओं को समझने से परे - उनके संचालन और समय और स्थान की जटिलताओं के साथ; इन समस्याओं पर लागू होने वाली विभिन्न तकनीकों को समझने से प्रक्रिया बहुत आसान हो सकती है।
सरणियों या सूचियों के साथ उत्पन्न होने वाली विभिन्न प्रकार की समस्याओं को देखते हुए यह विशेष रूप से सच है। इस ब्लॉग पोस्ट में, मैं ऐसी ही एक तकनीक पर ध्यान केंद्रित करूंगा: टू-पॉइंटर तकनीक, जो सरणी या सूची समस्याओं से निपटने के लिए विशेष रूप से प्रभावी है।
दो पॉइंटर तकनीक एक एल्गोरिथम दृष्टिकोण है, जो विशेष रूप से सरणियों या अनुक्रमों को हल करने के लिए प्रभावी है। इसका मतलब यह है कि दृष्टिकोण को स्ट्रिंग्स और लिंक्ड सूचियों पर भी लागू किया जा सकता है।
इसमें डेटा संरचना को पार करने के लिए दो अलग-अलग पॉइंटर्स का उपयोग शामिल है, जो अक्सर कम समय की जटिलता के साथ कुशल समाधान की ओर ले जाता है।
इस दृष्टिकोण में डेटा संरचना के विपरीत छोर से शुरू होने वाले और एक-दूसरे की ओर बढ़ने वाले दो पॉइंटर्स शामिल होते हैं, जिसका अर्थ है कि पॉइंटर्स विपरीत दिशाओं में चलते हैं। इस प्रकार की दो-पॉइंटर तकनीक उन परिदृश्यों में विशेष रूप से उपयोगी होती है जहां आप तत्वों की एक जोड़ी ढूंढना चाहते हैं जो कुछ शर्तों को पूरा करते हैं या जब दोनों छोर से तत्वों की तुलना करते हैं। सामान्य उपयोग के मामलों में पैलिंड्रोम की जांच करना या एक विशिष्ट राशि के साथ जोड़े ढूंढना शामिल है
उदाहरण:एक स्ट्रिंग एस दी गई है, रिक्त स्थान और प्रारंभिक शब्द क्रम को संरक्षित करते हुए एक वाक्य के भीतर प्रत्येक शब्द में वर्णों के क्रम को उलट दें।
def reverseWords(s: str) -> str: words = s.split() # Split the input string into words for i in range(len(words)): left = 0 # Initialize the left pointer right = len(words[i]) - 1 # Initialize the right pointer split_word = list(words[i]) # Convert the word into a list of characters while leftसूचक एक ही दिशा में आगे बढ़ रहे हैं।
इस दृष्टिकोण में, दोनों पॉइंटर्स डेटा संरचना के एक ही छोर से शुरू होते हैं और एक ही दिशा में आगे बढ़ते हैं। इस तकनीक का उपयोग अक्सर तब किया जाता है जब आपको किसी सरणी के भीतर किसी विंडो या उप-सरणी को ट्रैक करने की आवश्यकता होती है, जिससे आप कुछ शर्तों के आधार पर विंडो को कुशलतापूर्वक स्थानांतरित और समायोजित कर सकते हैं। सामान्य उपयोग के मामलों में स्लाइडिंग विंडो तकनीक और क्रमबद्ध सरणियों को मर्ज करना शामिल है।
दृष्टिकोण
- दो पॉइंटर्स आरंभ करें: डेटा संरचना की शुरुआत में दोनों पॉइंटर्स से प्रारंभ करें।
- पॉइंटर्स को स्थानांतरित करें: विशिष्ट स्थितियों के आधार पर एक पॉइंटर (आमतौर पर तेज़ वाला) को दूसरे से आगे ले जाएं।
- पॉइंटर्स को समायोजित करें: वांछित विंडो स्थितियों को बनाए रखने के लिए आवश्यकतानुसार पॉइंटर्स की स्थिति को संशोधित करें।
उदाहरण:आपको दो तार वर्ड1 और वर्ड2 दिए गए हैं। Word1 से शुरू करके, वैकल्पिक क्रम में अक्षर जोड़कर स्ट्रिंग्स को मर्ज करें। यदि एक स्ट्रिंग दूसरी से लंबी है, तो मर्ज की गई स्ट्रिंग के अंत में अतिरिक्त अक्षर जोड़ें।
def mergeAlternately(word1: str, word2: str) -> str: # Initialize an empty list to store the merged characters word_list = [] # Initialize two pointers, starting at the beginning of each word pointer_1 = 0 pointer_2 = 0 # Loop until one of the pointers reaches the end of its respective word while pointer_1निष्कर्ष
टू-पॉइंटर तकनीक एल्गोरिदम की दुनिया में एक बहुमुखी और कुशल उपकरण है, खासकर जब एरे, स्ट्रिंग्स और लिंक्ड सूचियों से निपटते हैं। चाहे संकेतक एक-दूसरे की ओर बढ़ रहे हों या एक ही दिशा में, यह दृष्टिकोण जटिल समस्याओं को सरल बना सकता है और आपके समाधानों के प्रदर्शन में सुधार कर सकता है। इन रणनीतियों को समझने और लागू करने से, आप कोडिंग चुनौतियों की एक विस्तृत श्रृंखला से निपटने के लिए बेहतर ढंग से सुसज्जित होंगे।
मैं आपको विभिन्न समस्याओं को हल करके और विभिन्न परिदृश्यों के साथ प्रयोग करके इन तकनीकों का अभ्यास करने के लिए प्रोत्साहित करता हूं। समय और अनुभव के साथ, आप पाएंगे कि टू-पॉइंटर तकनीक आपकी समस्या-समाधान टूलकिट में एक अमूल्य योगदान है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3