أهلاً،
هل تبحث عن بنية بيانات تخزن القيم الفريدة، وتسمح لك بإدراج القيم، والعثور على العدد الإجمالي للقيم، وحذف القيم؟ الخيار الأمثل لهذا هو مجموعة. تشتمل العديد من لغات البرمجة على بنية بيانات Set مضمنة، وجافا سكريبت ليست استثناءً. دعونا نتعمق أكثر في كيفية عمل المجموعات.
ما هو الإعداد؟
المجموعة عبارة عن بنية بيانات تتيح لك تخزين قيم فريدة من أي نوع، سواء كانت قيمًا أولية أو مراجع كائنات. تسمح المجموعة بعمليات الإدراج والحذف والتحديث والحجم مع تعقيد الوقت O(1). مما يجعل التعيين أسرع وأكثر كفاءة.
تم تصميم المجموعات لتوفير أوقات وصول سريعة. يتم تنفيذها عادةً بطريقة تجعل البحث عن العناصر أسرع من مجرد التحقق من كل عنصر واحدًا تلو الآخر. يمكن أن يكون التنفيذ النموذجي عبارة عن جدول تجزئة (بحث O(1)) أو شجرة بحث (بحث O(log(N))).
النقاط الرئيسية
الطرق الأساسية
أمثلة
// 1. Create a new Set and use the .add() method to add elements const mySet = new Set(); mySet.add(10); mySet.add(20); mySet.add(30); console.log(mySet); // Output: Set { 10, 20, 30 } // 2. Check if the Set has a specific element using .has() method console.log(mySet.has(20)); // Output: true console.log(mySet.has(40)); // Output: false // 3. Delete an element from the Set using .delete() method mySet.delete(20); console.log(mySet); // Output: Set { 10, 30 } // 4. Iterate over the Set using .keys() method // In Sets, .keys() and .values() do the same thing for (const key of mySet.keys()) { console.log(key); } // Output: // 10 // 30 // 5. Get the size of the Set using .size property console.log(mySet.size); // Output: 2
مثال على مجموعة مع مشكلة Leetcode:
3. أطول سلسلة فرعية بدون أحرف مكررة
بالنظر إلى سلسلة s، ابحث عن طول أطول سلسلة فرعية دون تكرار الأحرف.
حل
/** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { let set = new Set(); let ans = 0; let s_index = 0; for (let i = 0; iتوضيح:
تستخدم الدالة lengthOfLongestSubstring تقنية النافذة المنزلقة مع Set للعثور على أطول سلسلة فرعية دون تكرار الأحرف:
هذا كل شيء، إذا كان لديك أي شكوك أو أي اقتراح أو أي شيء فلا تتردد في إضافة تعليقات.
مصادر :
MDN (مجموعة)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3