"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > दो सूचक तकनीक को विच्छेदित करना

दो सूचक तकनीक को विच्छेदित करना

2024-08-15 को प्रकाशित
ब्राउज़ करें:381

Dissecting the two pointer technique

परिचय।

सरणी और सूचियों की बुनियादी बातों में महारत हासिल करने के बाद भी, इन डेटा संरचनाओं से संबंधित समस्याओं को हल करना कभी-कभी भारी लग सकता है। डेटा संरचनाओं को समझने से परे - उनके संचालन और समय और स्थान की जटिलताओं के साथ; इन समस्याओं पर लागू होने वाली विभिन्न तकनीकों को समझने से प्रक्रिया बहुत आसान हो सकती है।
सरणियों या सूचियों के साथ उत्पन्न होने वाली विभिन्न प्रकार की समस्याओं को देखते हुए यह विशेष रूप से सच है। इस ब्लॉग पोस्ट में, मैं ऐसी ही एक तकनीक पर ध्यान केंद्रित करूंगा: टू-पॉइंटर तकनीक, जो सरणी या सूची समस्याओं से निपटने के लिए विशेष रूप से प्रभावी है।

दो सूचक.

दो पॉइंटर तकनीक एक एल्गोरिथम दृष्टिकोण है, जो विशेष रूप से सरणियों या अनुक्रमों को हल करने के लिए प्रभावी है। इसका मतलब यह है कि दृष्टिकोण को स्ट्रिंग्स और लिंक्ड सूचियों पर भी लागू किया जा सकता है।
इसमें डेटा संरचना को पार करने के लिए दो अलग-अलग पॉइंटर्स का उपयोग शामिल है, जो अक्सर कम समय की जटिलता के साथ कुशल समाधान की ओर ले जाता है।

दो सूचकों के प्रकार.

सूचक एक दूसरे की ओर बढ़ रहे हैं।

इस दृष्टिकोण में डेटा संरचना के विपरीत छोर से शुरू होने वाले और एक-दूसरे की ओर बढ़ने वाले दो पॉइंटर्स शामिल होते हैं, जिसका अर्थ है कि पॉइंटर्स विपरीत दिशाओं में चलते हैं। इस प्रकार की दो-पॉइंटर तकनीक उन परिदृश्यों में विशेष रूप से उपयोगी होती है जहां आप तत्वों की एक जोड़ी ढूंढना चाहते हैं जो कुछ शर्तों को पूरा करते हैं या जब दोनों छोर से तत्वों की तुलना करते हैं। सामान्य उपयोग के मामलों में पैलिंड्रोम की जांच करना या एक विशिष्ट राशि के साथ जोड़े ढूंढना शामिल है

दृष्टिकोण

  1. पॉइंटर्स को इनिशियलाइज़ करें: एक पॉइंटर को शुरुआत में (बाएं) और दूसरे को डेटा संरचना के अंत (दाएं) से शुरू करें।
  2. पॉइंटर्स को स्थानांतरित करें: दी गई शर्तों के आधार पर पॉइंटर्स को एक-दूसरे की ओर समायोजित करें।
  3. शर्तों की जांच करें: जब तक वांछित परिणाम नहीं मिल जाता या कोई विशिष्ट शर्त पूरी नहीं हो जाती, तब तक पॉइंटर्स को एक-दूसरे की ओर ले जाना जारी रखें

उदाहरण:एक स्ट्रिंग एस दी गई है, रिक्त स्थान और प्रारंभिक शब्द क्रम को संरक्षित करते हुए एक वाक्य के भीतर प्रत्येक शब्द में वर्णों के क्रम को उलट दें।

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. पॉइंटर्स को स्थानांतरित करें: विशिष्ट स्थितियों के आधार पर एक पॉइंटर (आमतौर पर तेज़ वाला) को दूसरे से आगे ले जाएं।
  3. पॉइंटर्स को समायोजित करें: वांछित विंडो स्थितियों को बनाए रखने के लिए आवश्यकतानुसार पॉइंटर्स की स्थिति को संशोधित करें।

उदाहरण:आपको दो तार वर्ड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 



निष्कर्ष

टू-पॉइंटर तकनीक एल्गोरिदम की दुनिया में एक बहुमुखी और कुशल उपकरण है, खासकर जब एरे, स्ट्रिंग्स और लिंक्ड सूचियों से निपटते हैं। चाहे संकेतक एक-दूसरे की ओर बढ़ रहे हों या एक ही दिशा में, यह दृष्टिकोण जटिल समस्याओं को सरल बना सकता है और आपके समाधानों के प्रदर्शन में सुधार कर सकता है। इन रणनीतियों को समझने और लागू करने से, आप कोडिंग चुनौतियों की एक विस्तृत श्रृंखला से निपटने के लिए बेहतर ढंग से सुसज्जित होंगे।

मैं आपको विभिन्न समस्याओं को हल करके और विभिन्न परिदृश्यों के साथ प्रयोग करके इन तकनीकों का अभ्यास करने के लिए प्रोत्साहित करता हूं। समय और अनुभव के साथ, आप पाएंगे कि टू-पॉइंटर तकनीक आपकी समस्या-समाधान टूलकिट में एक अमूल्य योगदान है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/charlesamakoye/dissecting-the-two-pointer-technique-2lb4?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3