𝗟𝗲𝗲𝘁𝗰𝗼𝗱𝗲 𝟭𝟱𝟬 | 𝗗𝗮𝘆 𝟰: 𝗠𝗮𝗷𝗼𝗿𝗶𝘁𝘆 𝗘𝗹𝗲𝗺𝗲𝗻𝘁

تطلب منك مسألة Leetcode 169 إيجاد العنصر الأكثر تكراراً (majority element) في مصفوفة. يظهر هذا العنصر أكثر من n / 2 من المرات. ونفترض أنه موجود دائماً.

يمكنك حل هذه المسألة بطريقتين.

الطريقة الأولى: استخدام الخريطة (Map Method)

تستخدم هذه الطريقة خريطة (Map) لحساب عدد مرات ظهور كل رقم.

التعقيد (Complexity):

الطريقة الثانية: خوارزمية Boyer-Moore للتصويت (Boyer-Moore Voting Algorithm)

هذه طريقة محسنة لحل المسألة باستخدام مساحة ذاكرة ثابتة.

تخيل الأرقام كفرق متنافسة. في كل مرة يلتقي فيها رقم برقم مختلف، فإنهما يلغيان بعضهما البعض. وبما أن العنصر الأكثر تكراراً يظهر أكثر من نصف الوقت، فسيكون هو دائماً العنصر الأخير المتبقي.

آلية العمل:

التعقيد (Complexity):

لماذا يهم هذا الأمر:

كلتا الطريقتين لهما تعقيد زمني قدره O(n). ومع ذلك، تستخدم الطريقة الثانية ذاكرة أقل بكثير، فهي لا تحتاج إلى خريطة (Map)، مما يجعلها أفضل للبيانات الضخمة.

المصدر: https://dev.to/afuji/leetcode-150-day-4-majority-element-naive-vs-optimized-eo6