"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تشريح تقنية المؤشرين

تشريح تقنية المؤشرين

تم النشر بتاريخ 2024-08-15
تصفح:795

Dissecting the two pointer technique

مقدمة.

حتى بعد إتقان أساسيات المصفوفات والقوائم، قد يبدو حل المشكلات المتعلقة بهياكل البيانات هذه مرهقًا في بعض الأحيان. وبعيدًا عن فهم هياكل البيانات نفسها - جنبًا إلى جنب مع عملياتها وتعقيداتها الزمانية والمكانية؛ إن استيعاب التقنيات المختلفة التي تنطبق على هذه المشكلات يمكن أن يجعل العملية أسهل بكثير.
وهذا صحيح بشكل خاص نظرًا للتنوع الكبير في المشكلات التي يمكن أن تنشأ مع المصفوفات أو القوائم. في منشور المدونة هذا، سأركز على إحدى هذه الأساليب: تقنية المؤشرين، والتي تعتبر فعالة بشكل خاص في معالجة مشكلات المصفوفات أو القوائم.

مؤشران.

إن تقنية المؤشرين هي أسلوب خوارزمي، وهو فعال بشكل خاص لحل المصفوفات أو التسلسلات. وهذا يعني أنه يمكن أيضًا تطبيق هذا النهج على السلاسل والقوائم المرتبطة.
وهو يتضمن استخدام مؤشرين متميزين لاجتياز بنية البيانات، مما يؤدي غالبًا إلى حل فعال مع تعقيد زمني أقل.

أنواع المؤشرين.

المؤشرات تتحرك نحو بعضها البعض.

يتضمن هذا الأسلوب مؤشرين يبدأان من طرفين متقابلين لبنية البيانات ويتحركان تجاه بعضهما البعض، مما يعني أن المؤشرات تتحرك في اتجاهين متعاكسين. يعد هذا النوع من تقنية المؤشرين مفيدًا بشكل خاص في السيناريوهات التي تريد فيها العثور على زوج من العناصر التي تستوفي شروطًا معينة أو عند مقارنة العناصر من كلا الطرفين. تتضمن حالات الاستخدام الشائعة التحقق من وجود متناظر أو العثور على أزواج ذات مجموع محدد

يقترب

  1. تهيئة المؤشرات: ابدأ بمؤشر واحد في البداية (يسار) والآخر في نهاية (يمين) بنية البيانات.
  2. تحريك المؤشرات: اضبط المؤشرات تجاه بعضها البعض بناءً على الظروف المحددة.
  3. التحقق من الشروط: استمر في تحريك المؤشرات تجاه بعضها البعض حتى يتم العثور على النتيجة المطلوبة أو استيفاء شرط معين

مثال:بالنظر إلى سلسلة s، قم بعكس ترتيب الأحرف في كل كلمة داخل الجملة مع الحفاظ على المسافة البيضاء وترتيب الكلمات الأولي.

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. ضبط المؤشرات: قم بتعديل مواضع المؤشرات حسب الحاجة للحفاظ على ظروف النافذة المطلوبة.

مثال:يتم إعطاؤك سلسلتين word1 وword2. دمج السلاسل عن طريق إضافة أحرف بالترتيب بالتناوب، بدءاً من كلمة 1. إذا كانت السلسلة أطول من الأخرى، قم بإلحاق الحروف الإضافية بنهاية السلسلة المدمجة.

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 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3