أكثر من 120 تحديًا للبرمجة يتم تحديثها باستمرار وتفاعلية واختبارها ، باستخدام بطاقات Anki التعليمية.
تركز التحديات على الخوارزميات وهياكل البيانات الموجودة في مقابلات البرمجة .
يحتوي كل تحدٍ على حل مرجعي واحد أو أكثر وهي:
ستوفر التحديات قريبًا تلميحات إضافية عند الطلب لمساعدتك في الوصول إلى الحل الأمثل.
تفاصيل الدفاتر أيضًا:
يتم أيضًا تضمين التطبيقات المرجعية التي تم اختبارها بواسطة الوحدة لهياكل البيانات والخوارزميات المختلفة.
تستخدم مجموعة بطاقات Anki التعليمية المتوفرة التكرار المتباعد لمساعدتك في الاحتفاظ بالمفاهيم الأساسية.
رائعة للاستخدام أثناء التنقل.
هل تبحث عن موارد لمساعدتك في التحضير لمقابلات تصميم النظام والتصميم الموجه للكائنات ؟
تحقق من الريبو الشقيق The System Design Primer، والذي يحتوي على مجموعات Anki إضافية:
يحتوي كل تحدٍ على دفتري ملاحظات، ودفتر ملاحظات للتحدي يحتوي على اختبارات الوحدة التي يمكنك حلها، ودفتر ملاحظات للحلول كمرجع.
التنسيق : فئة التحدي - عدد التحديات
إجمالي عدد التحديات: 120
تم اختبار الوحدة، وتطبيقات كاملة الوظائف لهياكل البيانات التالية:
تم اختبار الوحدة، وتنفيذ كامل الوظائف للخوارزميات التالية:
اعتمادات الصورة
تحدي | دفتر ثابت |
---|---|
تحديد ما إذا كانت السلسلة تحتوي على أحرف فريدة | التحدي │ الحل |
تحديد ما إذا كانت السلسلة عبارة عن تبديل لسلسلة أخرى | التحدي │ الحل |
تحديد ما إذا كانت السلسلة عبارة عن دوران لسلسلة أخرى | التحدي │ الحل |
ضغط سلسلة | التحدي │ الحل |
عكس الأحرف في السلسلة | التحدي │ الحل |
بالنظر إلى سلسلتين، ابحث عن حرف واحد مختلف | التحدي │ الحل |
ابحث عن مؤشرين مجموعهما قيمة محددة | التحدي │ الحل |
تنفيذ جدول التجزئة | التحدي │ الحل |
تنفيذ الطنانة الفورية | التحدي │ الحل |
ابحث عن الحرف الأول غير المتكرر في السلسلة | ساهم │ ساهم |
إزالة الأحرف المحددة في سلسلة | ساهم │ ساهم |
عكس الكلمات في السلسلة | ساهم │ ساهم |
تحويل سلسلة إلى عدد صحيح | ساهم │ ساهم |
تحويل عدد صحيح إلى سلسلة | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفتر ثابت |
---|---|
إزالة التكرارات من القائمة المرتبطة | التحدي │ الحل |
ابحث عن العنصر kth حتى العنصر الأخير في القائمة المرتبطة | التحدي │ الحل |
حذف عقدة في منتصف القائمة المرتبطة | التحدي │ الحل |
تقسيم قائمة مرتبطة حول قيمة معينة | التحدي │ الحل |
أضف رقمين تم تخزين أرقامهما في قائمة مرتبطة | التحدي │ الحل |
ابحث عن بداية حلقة القائمة المرتبطة | التحدي │ الحل |
تحديد ما إذا كانت القائمة المرتبطة هي متناظرة | التحدي │ الحل |
تنفيذ قائمة مرتبطة | التحدي │ الحل |
تحديد ما إذا كانت القائمة دورية أو غير دورية | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفتر ثابت |
---|---|
تنفيذ مكدسات n باستخدام صفيف واحد | التحدي │ الحل |
قم بتنفيذ مكدس يتتبع الحد الأدنى من عناصره | التحدي │ الحل |
قم بتنفيذ مجموعة من فئات المكدسات التي تغلف قائمة المكدسات ذات السعة المحددة | التحدي │ الحل |
تنفيذ قائمة انتظار باستخدام مكدسين | التحدي │ الحل |
قم بفرز المكدس باستخدام مكدس آخر كمخزن مؤقت | التحدي │ الحل |
تنفيذ كومة | التحدي │ الحل |
تنفيذ قائمة الانتظار | التحدي │ الحل |
تنفيذ قائمة انتظار ذات أولوية مدعومة بمصفوفة | التحدي │ الحل |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
تنفيذ بحث العمق الأول (قبلي، داخلي، لاحقي) على الشجرة | التحدي │ الحل |
تنفيذ بحث العرض الأول على الشجرة | التحدي │ الحل |
تحديد ارتفاع الشجرة | التحدي │ الحل |
قم بإنشاء شجرة بحث ثنائية بأقل ارتفاع من مصفوفة مرتبة | التحدي │ الحل |
قم بإنشاء قائمة مرتبطة لكل مستوى من مستويات الشجرة الثنائية | التحدي │ الحل |
تحقق مما إذا كانت الشجرة الثنائية متوازنة | التحدي │ الحل |
تحديد ما إذا كانت الشجرة عبارة عن شجرة بحث ثنائية صالحة | التحدي │ الحل |
ابحث عن الوريث بالترتيب لعقدة معينة في شجرة بحث ثنائية | التحدي │ الحل |
ابحث عن ثاني أكبر عقدة في شجرة البحث الثنائية | التحدي │ الحل |
العثور على أدنى سلف مشترك | التحدي │ الحل |
عكس شجرة ثنائية | التحدي │ الحل |
تنفيذ شجرة بحث ثنائية | التحدي │ الحل |
تنفيذ كومة دقيقة | التحدي │ الحل |
تنفيذ محاولة | التحدي │ الحل |
تنفيذ بحث العمق الأول على الرسم البياني | التحدي │ الحل |
تنفيذ بحث العرض الأول على الرسم البياني | التحدي │ الحل |
تحديد ما إذا كان هناك مسار بين عقدتين في الرسم البياني | التحدي │ الحل |
تنفيذ رسم بياني | التحدي │ الحل |
ابحث عن أمر بناء في ضوء قائمة المشاريع والتبعيات. | التحدي │ الحل |
ابحث عن أقصر مسار في الرسم البياني الموزون. | التحدي │ الحل |
ابحث عن أقصر مسار في رسم بياني غير مرجح. | التحدي │ الحل |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
تنفيذ فرز الاختيار | التحدي │ الحل |
تنفيذ نوع الإدراج | التحدي │ الحل |
تنفيذ الفرز السريع | التحدي │ الحل |
تنفيذ نوع الدمج | التحدي │ الحل |
تنفيذ الفرز الجذري | التحدي │ الحل |
قم بفرز مجموعة من السلاسل بحيث تكون جميع الجناس بجانب بعضها البعض | التحدي │ الحل |
ابحث عن عنصر في مصفوفة مرتبة ومدورة | التحدي │ الحل |
ابحث في مصفوفة مرتبة عن عنصر ما | التحدي │ الحل |
ابحث عن int ليس في مدخلات n من الأعداد الصحيحة | التحدي │ الحل |
بالنظر إلى المصفوفات التي تم فرزها A وB، قم بدمج B في A بالترتيب المفرز | التحدي │ الحل |
تنفيذ فرز اختيار مستقر | ساهم │ ساهم |
جعل النوع غير المستقر مستقرًا | ساهم │ ساهم |
تنفيذ إصدار فعال ومكاني من الفرز السريع | ساهم │ ساهم |
بالنظر إلى مصفوفتين مفروزتين، قم بدمج أحدهما في الآخر بالترتيب المفرز | ساهم │ ساهم |
ابحث عن عنصر في مصفوفة من الأعداد الصحيحة التي تم تدويرها وفرزها | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
تنفيذ فيبوناتشي بشكل متكرر وديناميكي ومتكرر | التحدي │ الحل |
تعظيم العناصر الموضوعة في الحقيبة | التحدي │ الحل |
تعظيم العناصر غير المحدودة الموضوعة في حقيبة الظهر | التحدي │ الحل |
أوجد أطول متتالية مشتركة | التحدي │ الحل |
أوجد أطول متتالية لاحقة متزايدة | التحدي │ الحل |
تقليل تكلفة ضرب المصفوفات | التحدي │ الحل |
تعظيم أسعار الأسهم نظرا للمعاملات k | التحدي │ الحل |
أوجد الحد الأدنى لعدد الطرق لتمثيل n سنتًا بمعلومية مجموعة من العملات المعدنية | التحدي │ الحل |
أوجد العدد الفريد من الطرق لتمثيل n سنتًا بمعلومية مجموعة من العملات المعدنية | التحدي │ الحل |
اطبع جميع المجموعات الصحيحة من أزواج n من الأقواس | التحدي │ الحل |
انتقل في متاهة | التحدي │ الحل |
طباعة كافة المجموعات الفرعية لمجموعة | التحدي │ الحل |
طباعة كافة التباديل من السلسلة | التحدي │ الحل |
ابحث عن الفهرس السحري في المصفوفة | التحدي │ الحل |
أوجد عدد الطرق لصعود عدد n من الخطوات | التحدي │ الحل |
تنفيذ أبراج هانوي بعدد 3 أبراج وأقراص N | التحدي │ الحل |
تنفيذ مضروب بشكل متكرر، ديناميكي، ومتكرر | ساهم │ ساهم |
إجراء بحث ثنائي على مجموعة مرتبة من الأعداد الصحيحة | ساهم │ ساهم |
طباعة كافة مجموعات السلسلة | ساهم │ ساهم |
تنفيذ وظيفة تعبئة الطلاء | ساهم │ ساهم |
أوجد جميع التباديل التي تمثل n سنتًا، معطيًا عملات معدنية بقيمة 1، 5، 10، 25 سنتًا | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
إنشاء قائمة من الأعداد الأولية | التحدي │ الحل |
ابحث عن الجذر الرقمي | التحدي │ الحل |
إنشاء فئة تدعم الإدراج، الحد الأقصى، الحد الأدنى، المتوسط، الوضع في O(1) | التحدي │ الحل |
تحديد ما إذا كان الرقم يمثل قوة اثنين | التحدي │ الحل |
أضف رقمين بدون علامة + أو - | التحدي │ الحل |
اطرح رقمين بدون علامة + أو - | التحدي │ الحل |
تحقق مما إذا كان الرقم أوليًا | ساهم │ ساهم |
تحديد ما إذا كان الخطان على المستوى الديكارتي يتقاطعان | ساهم │ ساهم |
باستخدام الإضافة فقط، قم بتنفيذ الضرب والطرح والقسمة للأعداد الصحيحة | ساهم │ ساهم |
أوجد العدد k بحيث تكون العوامل الأولية الوحيدة هي 3 و5 و7 | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
تنفيذ عمليات معالجة البتات الشائعة | التحدي │ الحل |
حدد عدد البتات المطلوب قلبها لتحويل a إلى b | التحدي │ الحل |
رسم خط على الشاشة | التحدي │ الحل |
اقلب قليلاً لتعظيم أطول تسلسل من 1s | التحدي │ الحل |
احصل على الأرقام الأكبر والأصغر التالية | التحدي │ الحل |
دمج رقمين ثنائيين | التحدي │ الحل |
مبادلة البتات الفردية والزوجية في عدد صحيح | التحدي │ الحل |
طباعة التمثيل الثنائي لرقم بين 0 و 1 | التحدي │ الحل |
تحديد عدد 1s في التمثيل الثنائي لعدد صحيح معين | ساهم │ ساهم |
أضف تحديًا | ساهم │ ساهم |
تحدي | دفاتر الملاحظات الثابتة |
---|---|
ابحث عن أطول سلسلة فرعية تحتوي على k على الأكثر من الأحرف المميزة | التحدي │ الحل |
العثور على أعلى منتج من ثلاثة أرقام | التحدي │ الحل |
تعظيم أرباح الأسهم من عملية شراء واحدة وبيع واحد | التحدي │ الحل |
نقل جميع الأصفار في القائمة إلى النهاية | التحدي │ الحل |
ابحث عن منتجات كل int | التحدي │ الحل |
بالنظر إلى قائمة الإدخالات والمخارج، ابحث عن الفترة الأكثر ازدحامًا | التحدي │ الحل |
تحديد محيط الجزيرة | التحدي │ الحل |
تنسيق مفاتيح الترخيص | التحدي │ الحل |
ابحث عن أطول مسار ملف مطلق | التحدي │ الحل |
دمج نطاقات Tuple | التحدي │ الحل |
تعيين ملفات تعريف الارتباط | التحدي │ الحل |
حدد ما إذا كان بإمكانك الفوز في Nim | التحدي │ الحل |
تحقق مما إذا كان من الممكن استخدام إحدى المجلات لإنشاء مذكرة فدية | التحدي │ الحل |
أوجد عدد المرات التي يمكن فيها عرض الجملة على الشاشة | التحدي │ الحل |
شجرة طوباوية | التحدي │ الحل |
تعظيم xor | التحدي │ الحل |
أضف تحديًا | ساهم │ ساهم |
interactive-coding-challenges # Repo
├─ arrays_strings # Category of challenges
│ ├─ rotation # Challenge folder
│ │ ├─ rotation_challenge.ipynb # Challenge notebook
│ │ ├─ rotation_solution.ipynb # Solution notebook
│ │ ├─ test_rotation.py # Unit test*
│ ├─ compress
│ │ ├─ compress_challenge.ipynb
│ │ ├─ compress_solution.ipynb
│ │ ├─ test_compress.py
│ ├─ ...
├─ linked_lists
│ ├─ palindrome
│ │ └─ ...
│ ├─ ...
├─ ...
* تقوم دفاتر الملاحظات (.ipynb) بقراءة/كتابة ملف اختبار الوحدة المرتبط (.py).
يحتوي ملف README هذا على روابط إلى Binder، الذي يستضيف دفاتر ملاحظات ديناميكية لمحتويات الريبو عبر الإنترنت دون الحاجة إلى التثبيت.
يجري:
pip install jupyter
للحصول على تعليمات تفصيلية ونصوص برمجية وأدوات لإعداد بيئة التطوير الخاصة بك على النحو الأمثل، راجع مستودع إعداد التطوير.
لمزيد من التفاصيل حول تثبيت الكمبيوتر المحمول، اتبع الإرشادات هنا.
يمكن العثور على مزيد من المعلومات حول أجهزة الكمبيوتر المحمولة IPython/Jupyter هنا.
يتم تقديم التحديات في شكل IPython/Jupyter Notebooks وتم اختبارها باستخدام Python 2.7 وPython 3.x.
إذا كنت بحاجة إلى تثبيت IPython/Jupyter Notebook، فراجع قسم تثبيت الكمبيوتر المحمول.
تشغيل دفتر التحديات:
$ git clone https://github.com/donnemartin/interactive-coding-challenges.git
$ cd interactive-coding-challenges
$ jupyter notebook
سيؤدي هذا إلى تشغيل متصفح الويب الخاص بك مع قائمة فئات التحدي:
لتصحيح الحل الخاص بك باستخدام pdb، راجع التذكرة التالية.
ملاحظة: إذا كان الحل الخاص بك مختلفًا عن تلك المدرجة في دفتر الحلول، ففكر في إرسال طلب سحب حتى يتمكن الآخرون من الاستفادة من عملك. قم بمراجعة إرشادات المساهمة للحصول على التفاصيل.
يتم عرض التحديات والحلول واختبارات الوحدات في شكل دفاتر IPython/Jupyter .
المساهمات هي موضع ترحيب!
قم بمراجعة إرشادات المساهمة للحصول على تفاصيل حول كيفية:
لا تتردد في الاتصال بي لمناقشة أي مشاكل أو أسئلة أو تعليقات.
يمكن العثور على معلومات الاتصال الخاصة بي على صفحة GitHub الخاصة بي.
أقدم لك التعليمات البرمجية والموارد في هذا المستودع بموجب ترخيص مفتوح المصدر. نظرًا لأن هذا هو المستودع الشخصي الخاص بي، فإن الترخيص الذي تحصل عليه للأكواد والموارد الخاصة بي هو مني وليس من صاحب العمل (Facebook).
Copyright 2015 Donne Martin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.