algorithms_and_data_structures
1.0.0
الوضع الحالي | احصائيات |
---|---|
إجمالي مشاكل C++ | 188 |
إجمالي مشاكل بايثون | 15 |
الخط اليومي الحالي | 11 |
الخط الأخير | 20/06/2019 - 21/06/2019 |
الخط الحالي | 23/06/2019 - 03/07/2019 |
ملاحظة: بعض التعليمات البرمجية هنا قديمة وتم كتابتها عندما كنت أتعلم لغة C++. من الممكن أن تكون التعليمات البرمجية غير آمنة أو أنها تضع افتراضات خاطئة. يرجى استخدامه بحذر. طلبات السحب مرحب بها دائمًا.
مشكلة | حل |
---|---|
ابحث عن العقدة n للقائمة المرتبطة من الأخيرة. | nthToLastNode.cpp، nth_to_last_node.py |
أضف أرقامًا حيث يتم تمثيل كل رقم من الرقم بواسطة عقدة قائمة مرتبطة. إعطاء الإخراج كقائمة مرتبطة. | add_two_numbers_lists.cpp، add_two_numbers_list.py |
مبادلة العقد لقائمة مرتبطة دون تبادل البيانات. | SwapNodesWithoutSwappingData.cpp، Swap_nodes_without_swapping_data.py |
عكس القائمة المرتبطة بشكل متكرر ومتكرر | عكسLinkedListIterAndRecurse.cpp، عكس_linkedlist.py |
في حالة وجود قائمة مرتبطة، قم بعكس العقد البديلة وألحقها في النهاية. | reverseAlternateNodes.cpp |
فقط بالنظر إلى مؤشر العقدة، قم بحذف العقدة من القائمة المرتبطة. | deleteNode.cpp |
احذف القائمة المرتبطة بأكملها. | deleteLinkedlist.cpp |
اطبع العقدة الوسطى للقائمة المرتبطة دون التكرار مرتين. | printMiddleNode.cpp |
تحديد ما إذا كانت القائمة المرتبطة هي متناظرة. | listPallindrome.cpp |
إدراج البيانات في قائمة مرتبطة مرتبة. | InsertInASortedLinkedList.cpp |
تحديد نقطة التقاطع (الاندماج) لقائمتين مرتبطتين. | findIntersectionPointOfLists.cpp, intersection_of_lists.py |
استنساخ قائمة مرتبطة تحتوي على المؤشر التالي والعشوائي، Space Complexity - O(1). | cloneListWithRandomPtr.cpp، clone_list_with_random_ptr.py |
نظرًا لوجود قائمة مرتبطة مرتبة تحتوي على نسخ مكررة، قم بإزالة التكرارات في تكرار واحد. | إزالة DuplicatesFromSortedList.cpp |
باستخدام خوارزمية فلويد للعثور على الدورة، اكتشف ما إذا كانت القائمة المرتبطة تحتوي على دورة، وإذا كانت تحتوي على دورة، فقم بإزالة الحلقة | floyedCycleDetection.cpp |
فرز قائمة مرتبطة باستخدام فرز الدمج | merge_sort.cpp |
بالنظر إلى قائمة مرتبطة بشكل فردي L 0 -> L 1 -> … -> L n-1 -> L n . أعد ترتيب العقد في القائمة (في مكانها) بحيث تكون القائمة المشكلة الجديدة هي: L 0 -> L n -> L 1 -> L n-1 -> L 2 -> L n-2 .... | rerange_list.cpp |
يتضمن تضمين تنفيذ رأس واحد لهياكل البيانات وبعض الخوارزميات.
بنية البيانات/الخوارزمية | تطبيق |
---|---|
وحدات الماكرو والخوارزميات العامة مثل المبادلة وتوليد الأرقام العشوائية | عام.ح |
تنفيذ المكدس العام | مكدس. ح |
تنفيذ قائمة الانتظار العامة | قائمة الانتظار. ح |
تنفيذ القائمة العامة | قائمة.ح |
تنفيذ شجرة البحث الثنائية | BinarySearchTree.h |
تنفيذ الفرز السريع | فرز سريع.h |
دمج تنفيذ الفرز | mergeSort.h |
تنفيذ فرز التحديد | اختيار فرز. ح |
تنفيذ الفرز الفقاعي | bubbleSort.h |
تنفيذ Linux Kernel Double LinkedList | double_linked_list.h |
تنفيذ الرسم البياني العام (قائمة الجوار) | رسم بياني ح |
تنفيذ فرز الكومة | heap_sort.h |
تنفيذ مكتبة السلسلة الخاصة بي | pstring.h pstring.cpp |
مشكلة | حل |
---|---|
تحديد ما إذا كان الرقم هو قوة 2. | power_of_2.cpp |
أضف رقمين ثنائيين ممثلين كسلسلة. | addBin.cpp |
تحديد القوة التالية للرقم 2 لرقم معين. | next_power_of_2.cpp |
باستخدام معالجة البت، يمكنك تحديد ما إذا كان الرقم مضاعفًا للرقم 3. | multiple_of_3.cpp |
تحديد Endianess للجهاز، وطباعة رقم في Endianess العكسي. | reverseEndianness.cpp |
أوجد تكافؤ الرقم المعطى. | find_parity.cpp |
تنفيذ الضرب السريع لرقم إلى 7 باستخدام معالجة البت. | multiply_by_7.cpp |
عكس البتات من الأعداد الصحيحة غير الموقعة (طريقتان - العكس شيئًا فشيئًا والتقسيم والقهر). | reverseBitsOfAnInteger.cpp |
دالة صغيرة لتحديد موضع البت الأكثر ضبطًا في عدد صحيح معين. | right_most_set_bit.cpp |
بمعلومية متجه الأعداد، يوجد رقم واحد فقط يتكرر عددًا فرديًا من المرات، فأوجد الرقم. | find_odd_one_out.cpp |
بالنظر إلى عددين صحيحين، حدد ما إذا كان مجموعهما سيكون تجاوزًا للأعداد الصحيحة. | integerOverflow.cpp |
كم عدد عمليات قلب البت التي ستتطلبها لتحويل الرقم A إلى B. | countNumberOfBitFlips.cpp |
بالنظر إلى رقم x وموضعين (من الجانب الأيمن) في التمثيل الثنائي لـ x، اكتب دالة تقوم بتبديل n من البتات الصحيحة في موضعين محددين وإرجاع النتيجة. ومن المسلم به أيضًا أن مجموعتي البتات لا تتداخلان. | SwapSetOfBits.cpp |
أضف رقمين دون استخدام أي عوامل حسابية | add_without_operators.cpp |
تلعب لويز وريتشارد لعبة. لديهم عداد مضبوط على N. تحصل Louise على المنعطف الأول وتتناوب المنعطفات بعد ذلك. في اللعبة يقومون بالعمليات التالية:
| counter_game.cpp |
تحديد ما إذا كان هناك عددان صحيحان لهما إشارات متضادة. | check_opposite_signs.cpp |
قم بتبديل قطعتين في الموضع p و q لعدد صحيح معين. | SwapBits.cpp |
تحقق مما إذا كان الرقم بقوة 4. | check_if_power_of_4.cpp |
مشكلة | حل |
---|---|
المشكلة 1-1: الإصدار 6: اكتب خوارزمية لتحديد ما إذا كانت السلسلة تحتوي على أحرف فريدة أم لا. هل يمكننا القيام بذلك دون استخدام هياكل بيانات إضافية؟ | 1-1-hasUniqueChars.cpp، 1-1-hasUniqueChars.py |
المشكلة 1-2: الإصدار 5: قم بعكس سلسلة عندما تقوم بتمرير سلسلة C منتهية بقيمة خالية. | 1-2-edi5-reverseString.cpp |
المشكلة 1-2: الإصدار 6: بالنظر إلى سلسلتين، حدد ما إذا كانت إحداهما تبديلًا للأخرى. | 1-2-perm-strings.cpp، 1-2-perm-strings.py |
المشكلة 1-3: الإصدار 5: اكتب خوارزمية لإزالة الأحرف المكررة من السلسلة. | 1-3-edi5-removeDuplicates.cpp |
المشكلة 1-3: الإصدار 6: URLify: استبدل كافة المسافات في السلسلة بـ '%20'. ويفضل أنبلايس | 1-3-URLify.cpp |
المشكلة 1-4: الإصدار 6: بالنظر إلى سلسلة، اكتب دالة للتحقق مما إذا كانت عبارة عن تبديل لمتغير متناظر. | 1-4-pallindrome-permutations.cpp |
المشكلة 1-5: الإصدار 6: هناك ثلاثة تعديلات محتملة يمكن إجراؤها على سلسلة - أدخل حرفًا، أو احذف حرفًا، أو استبدل حرفًا. بالنظر إلى سلسلتين، حدد ما إذا كان يتعين عليهما تعديل واحد أو 0. | 1-5-one-edit-away.cpp |
المشكلة 1-6: تنفيذ أسلوب لإجراء ضغط السلسلة الأساسي. يجب ضغط سلسلة المثال aabcccccaaa إلى a2b1c5a3 ، ولكن إذا كانت السلسلة المضغوطة أكبر من السلسلة الأصلية، فسيتم إرجاع السلسلة الأصلية | 1-6-string-compression.cpp |
المسألة 1-7: قم بتدوير المصفوفة في اتجاه عقارب الساعة (وعكس اتجاه عقارب الساعة) بمقدار 90 درجة | 1-7-matrix-rotation.cpp |
المشكلة 1-8: اكتب خوارزمية بحيث إذا كان عنصر مصفوفة MxN يساوي 0، فسيتم تعيين الصف والعمود بالكامل على 0. | 1-8-صفر-matrix.cpp |
المشكلة 1-9: بالنظر إلى سلسلتين s1 وs2، حدد s2 هو دوران s1 باستخدام استدعاء واحد فقط لوظيفة تتحقق مما إذا كانت سلسلة واحدة تدور حول سلسلة أخرى. | 1-9-string-rotation.cpp |
المشكلة 2-1: إزالة التكرارات من قائمة مرتبطة غير مصنفة . ماذا لو لم يُسمح بوجود مخزن مؤقت مؤقت. | 2-1-remove-dups.cpp |
المشكلة 2-2: تحديد العقدة k من آخر قائمة مرتبطة بشكل فردي. (النهج التكراري والعودي) | 2-2-kthToLast.cpp |
المشكلة 2-3: تنفيذ خوارزمية لحذف عقدة في منتصف قائمة مرتبطة بشكل فردي | 2-3-حذف-middle-node.cpp |
المشكلة 2-4: قم بتقسيم قائمة مرتبطة حول قيمة x، جميع العقد الأصغر من x تأتي قبل جميع العقد الأكبر من x | 2-4-partition.cpp |
المشكلة 2-5: لديك رقمين يمثلهما قائمة مرتبطة حيث تحتوي كل عقدة على رقم واحد. يتم تخزين الأرقام بترتيب عكسي، بحيث تكون أرقام 1 في رأس القائمة. اكتب دالة تجمع الرقمين وترجع المجموع كقائمة مرتبطة.مثال:
| 2-5-add-lists.cpp |
المشكلة 2-6: تحديد ما إذا كانت القائمة المرتبطة متناظرة (نهجان تكراريان ونهج متكرر واحد | 2-6-palindrome.cpp |
المشكلة 2-7: تحديد ما إذا كانت القائمة المرتبطة بشكل فردي تتقاطع، إذا كانت الإجابة بنعم، قم بإرجاع العقدة المتقاطعة. يتم تعريف التقاطع بناءً على المرجع وليس على القيم | 2-7-intersection.cpp |
المشكلة 2-8: اكتشف ما إذا كانت القائمة المرتبطة بها حلقة، ابحث عن عقدة البداية للحلقة وقم بإزالة الحلقة | 2-8-loop-detection.cpp |
مشكلة | حل |
---|---|
مصطلح فيبوناتشي N باستخدام تقنيات الحفظ المختلفة | fibonacci.cpp |
أطول مشكلة لاحقة مشتركة | lcs.cpp، Long_common_subsequence.py |
الحد الأقصى لقيمة التبعية المتجاورة مشكلة ويكي | max_subsequence.cpp |
الرقم الكاتالوني - قم بحساب عدد أشجار البحث الثنائية الممكنة باستخدام مفاتيح n | catalan_number.cpp |
احسب عدد المسارات الفريدة من أصل المصدر (0، 0) إلى الوجهة (m-1، n-1) في شبكة amxn. يمكنك فقط التحرك إما في الاتجاه السفلي أو الصحيح. | Unique_paths.cpp |
0-1 مشكلة الحقيبة: تخيل أنك لص وتريد سرقة الأشياء والغرفة مليئة بالأشياء. لديك حقيبة ظهر يمكنها تحمل أقصى سعة للوزن W، وتريد أن تملأها بحيث تكون قيمتها القصوى. كونك لصًا ذكيًا، فأنت تعرف أوزان وقيم كل عنصر في الغرفة. كيف يمكنك ملء حقيبتك، بحيث تحصل على أقصى قيمة ممكنة، بحيث لا يمكنك سوى ملء ما يصل إلى سعة W. | 0_1_knapsack_problem.cpp |
مشكلة | حل |
---|---|
اجتياز ترتيب المستوى التكراري للشجرة باستخدام قائمة الانتظار | levelOrderTraversalIterative.cpp،level_order_tree_traversal_iterated.py |
اجتياز ترتيب المستوى العودي للشجرة | levelOrderTraversalRecursive.cpp،level_order_tree_traversal_recursive.py |
اجتياز الشجرة بشكل متعرج | zigZagTraversal.cpp, zig_zag_traversal.py |
السلف والخلف لعقدة معينة في شجرة البحث الثنائية | PrevSuccessor.cpp |
بالنظر إلى قيم العقدتين في شجرة البحث الثنائية، ابحث عن السلف المشترك الأدنى (LCA). افترض أن كلا القيمتين موجودتان في الشجرة. | أدنى-common-ancestor.cpp، أدنى_common_ancestor.py |
بالنظر إلى شجرة ثنائية (على عكس شجرة البحث الثنائية)، ابحث عن السلف المشترك الأدنى (LCA). | أدنى-سلف مشترك-ثنائي-شجرة.cpp |
في حالة وجود شجرة ثنائية، قم بطباعة جميع مساراتها من الجذر إلى الورقة بمعدل مسار واحد لكل سطر. | printAllRootToLeafPath.cpp |
تحديد ما إذا كانت الشجرة عبارة عن شجرة مجموع. SumTree هي شجرة ثنائية حيث قيمة العقدة تساوي مجموع العقد الموجودة في الشجرة الفرعية اليسرى والشجرة الفرعية اليمنى. الشجرة الفارغة هي SumTree ويمكن اعتبار مجموع الشجرة الفارغة 0. تعتبر العقدة الورقية أيضًا SumTree. | sumTree.cpp |
قم بتحويل شجرة إلى sumTree، بحيث تكون كل عقدة عبارة عن مجموع الشجرة الفرعية اليسرى واليمنى للشجرة الأصلية. | تحويل_to_sum_tree.cpp، تحويل_to_sum_tree.py |
تحويل مصفوفة مرتبة إلى شجرة بحث ثنائية متوازنة. | SortedArrayToBST.cpp |
بالنظر إلى شجرة ثنائية، قم بإنشاء مجموع كل عمود رأسي. | VerticalSum.cpp |
بالنظر إلى الشجرة الثنائية والمفتاح، فإن العقدة ذات المفتاح موجودة في الشجرة. ابحث عن جميع أسلاف العقدة ذات المفتاح، والسلف هنا هو العقد الموجودة في المسار المستقيم من العقدة إلى الجذر. | Node_ancestors_in_root_path.cpp |
بالنظر إلى الشجرة الثنائية والمفتاح، قم بإرجاع مستوى العقدة بالمفتاح. الجذر عند المستوى 1، وإذا كانت العقدة ذات المفتاح غير موجودة في الشجرة، فسيتم إرجاع 0 | level_of_node.cpp |
في حالة وجود شجرة ثنائية، ابحث عن جميع المسارات من الجذر إلى العقد التي يبلغ مجموعها k. | k_sum_paths.cpp |
بالنظر إلى شجرة ثنائية، قم بطباعة عقدها مستوى تلو الآخر بترتيب عكسي. أي أن جميع العقد الموجودة في المستوى الأخير يجب أن تتم طباعتها أولاً متبوعة بالعقد من المستوى الثاني إلى الأخير وهكذا.. يجب طباعة جميع العقد لأي مستوى من اليسار إلى اليمين. | reverseLevelOrderTraversal.cpp |
عكس شجرة ثنائية، بشكل متكرر ومتكرر. | invert_a_tree.cpp |
بالنظر إلى شجرة البحث الثنائية، ابحث عن السقف والأرضية لمفتاح معين فيها. إذا كان المفتاح المحدد يقع في BST، فإن كلا من الكلمة والسقف يساوي هذا المفتاح، وإلا فإن السقف يساوي المفتاح الأكبر التالي (إن وجد) في BST والأرضية تساوي المفتاح الأكبر السابق (إن وجد) في BST | Floor_ceil_bst.cpp |
ابحث عن أصغر عنصر في شجرة البحث الثنائية | kth_smallest.cpp |
التحقق من صحة ما إذا كانت الشجرة الثنائية المحددة عبارة عن شجرة بحث ثنائية. | validate_bst.cpp |
بالنظر إلى شجرة بحث ثنائية ورقم مستهدف، يتم إرجاع صحيح إذا كان هناك عنصرين في BST بحيث يكون مجموعهما مساويًا للهدف المحدد. | find_target_k.cpp |
بالنظر إلى شجرة بحث ثنائية غير فارغة وقيمة مستهدفة، ابحث عن القيمة في BST الأقرب إلى الهدف. لاحظ أيضًا أن القيمة المستهدفة هي نقطة عائمة. ستكون هناك قيمة فريدة واحدة فقط وهي الأقرب إلى الهدف. | الأقرب_bst_value.cpp، الأقرب_bst_value.py |
بالنظر إلى شجرة ثنائية، عند اجتياز الطلب المسبق، قم بإنشاء مخرجات سلسلة تحتوي على قيم العقدة والأقواس. يجب أن يتم تمثيل العقدة الفارغة بواسطة زوج الأقواس الفارغ "()". وتحتاج إلى حذف جميع أزواج الأقواس الفارغة التي لا تؤثر على علاقة التعيين الفردي بين السلسلة والشجرة الثنائية الأصلية. أمثلة في ملف التعليمات البرمجية | string_from_tree.cpp |
مشكلة | حل |
---|---|
تنفيذ خوارزمية روبن كارب للبحث عن السلسلة | robinKarpStringMatching.cpp |
ابحث عن التقليب التالي لسلسلة معينة، على سبيل المثال. إعادة ترتيب السلسلة المعطاة بطريقة تكون أكبر من الناحية المعجمية من السلسلة المعطاة | next_permutation.cpp |
تنفيذ خوارزمية Z لمطابقة الأنماط | z.cpp |
حالات اختبار لمكتبة السلسلة التي تم إنشاؤها ذاتيًا | pstring_test.cpp |
احصل على طول الكلمة الأخيرة في السلسلة. | length_of_last_word.cpp |
العثور على الفرق بين سلسلتين. يتم إنشاء السلسلة t عن طريق الخلط العشوائي للسلسلة ثم إضافة حرف آخر في موضع عشوائي. حدد الحرف المختلف في t | find_difference.cpp |
مشكلة | حل |
---|---|
طباعة محتويات المصفوفة بترتيب حلزوني | Matrix_spiral_print.cpp |
بالنظر إلى مصفوفة M x N، قم بتدويرها بواسطة دورات R عكس اتجاه عقارب الساعة، وقم بإظهار المصفوفة الناتجة. | Rotate_matrix.cpp |
تدوير مصفوفة حسب عناصر r (يسار أو يمين) | array_rotation.cpp |
بالنظر إلى مصفوفة من عمليات التداخل المتكررة/غير المتكررة، حدد أول عدد صحيح غير متكرر في هذه المصفوفة | first_non_repeating_int.cpp |
في Quantumland، هناك n مدن مرقمة من 1 إلى n. هنا، c تشير إلى المدينة i. توجد طرق n−1 في Quantumland. هنا، يوجد c i وc i+1 طريق ثنائي الاتجاه بينهما لكل i < n. هناك شائعة مفادها أن Flatland ستهاجم Quantumland، وتريد الملكة الحفاظ على أرضها آمنة. الطريق بين c i و c i+1 آمن إذا كان هناك حارس في c i أو c i+1 . وقد قامت الملكة بالفعل بوضع عدد قليل من الحراس في بعض المدن، لكنها غير متأكدة مما إذا كان عددهم كافياً للحفاظ على الطرق آمنة. إنها تريد معرفة الحد الأدنى لعدد الحراس الجدد الذين تحتاج إلى توظيفهم. راجع التعليقات في الحل للحصول على تفاصيل الإدخال/الإخراج. | save_quantamland.cpp |
لقد تم إعطاؤك عددًا صحيحًا N. ابحث عن الأرقام الموجودة في هذا الرقم والتي تقسم N بالضبط (القسمة التي تترك 0 كباقي) واعرض عددها. بالنسبة لـ N=24، هناك رقمين (2 و4). كلا الرقمين يقسمان 24 تمامًا. إذن إجابتنا هي 2. شاهد المزيد من التفاصيل في التعليق الرئيسي لملف الحل. | findDigits.cpp |
تشفير النص ثم فك تشفيره باستخدام Caeser Cipher. | caeser_cipher.cpp |
قم بتشفير النص ثم فك تشفيره باستخدام تشفير Vigenère. | vigenere_cipher.cpp |
توليد أرقام ثنائية بين 1 إلى N بكفاءة. | n_binary.cpp |
تنفيذ وظيفة الطاقة | power_function.cpp |
مشكلة | حل |
---|---|
طباعة كافة التباديل من السلسلة. مثال: تباديل ABC هي ABC، ACB، BCA، BAC، CAB، CBA | string_permutations.cpp |
خوارزمية إقليدية لإيجاد القاسم المشترك الأكبر لعددين. (التكرارية والعودية) | gcd.cpp |
تنفيذ الأسرى (x، y) باستخدام نهج فرق تسد. حاول تنفيذه في O(logn) | pow.cpp |
احسب مضروب عدد كبير، على سبيل المثال 100 (سيحتوي على 158 رقمًا) | Factorial_of_large_num.cpp |
قم بإنشاء جميع الكلمات الممكنة من رقم تم إدخاله على لوحة مفاتيح الهاتف المحمول التقليدية | phone_digits.cpp |
نظرًا لتمثيل سلسلة لرقم، قم بإزالة أحرف n من السلسلة بحيث يكون تمثيل الرقم في أدنى مستوى ممكن. | low_possible_number.cpp |
اكتشاف ما إذا كان الرقم هو رقم سعيد. يكون الرقم رقمًا سعيدًا إذا كان تسلسل العمليات حيث يتم استبدال الرقم بمجموع مربع أرقامه يؤدي في النهاية إلى 1. الرقم ليس رقمًا سعيدًا إذا كنا في حلقة لا نهائية عند تنفيذ العمليات المذكورة أعلاه. | Happy_number.cpp |
مشكلة | حل |
---|---|
لدينا سلسلة من عروض الأسعار اليومية للسهم. نحتاج إلى حساب مدى سعر السهم لجميع الأيام n. يتم تعريف فترة اليوم الثامن على أنها الحد الأقصى لعدد الأيام المتتالية، التي كان سعر السهم فيها أقل من أو يساوي اليوم الثامن. بالنسبة لأسعار الأسهم {100، 60، 70، 65، 80، 85} سيكون النطاق {1، 1، 2، 1، 4، 5}. النطاق الزمني لليوم الأول هو دائمًا 1، والآن يبلغ سعر السهم في اليوم الثاني 60، ولا يوجد يوم قبله عندما كان المخزون أقل من 60. لذلك يبقى النطاق 1. بالنسبة لليوم الثالث، يتم تسعير السهم عند 70، لذا فإن مدىه هو 2، كما كان في اليوم السابق 60، وهكذا. | Stock_span_problem.cpp |
بالنظر إلى تعبير infix، قم بتحويله إلى تعبير postfix، مثال (A+B)*C --> AB+C* | infix_to_postfix.cpp |
بالنظر إلى سلسلة تحتوي فقط على الأحرف '('،')'، '{'، '}'، '[' و ']'، حدد ما إذا كانت سلسلة الإدخال صالحة. يجب إغلاق الأقواس بالترتيب الصحيح، "( )" و"()[]{}" كلها صالحة ولكن "(]" و"([)]" ليست كذلك. | valid_parenthesis.cpp |
مشكلة | حل |
---|---|
في حالة وجود متجه تم فرزه، قم بإرجاع الفهرس الأول لحدوث قيمة في المتجه، إذا كان الرقم غير موجود، قم بإرجاع -1 | first_occurrence_binary_search.cpp |
ابحث عن العنصر المتكرر الأول في مصفوفة من الأعداد الصحيحة. بمعرفة مصفوفة من الأعداد الصحيحة، ابحث عن العنصر المتكرر الأول فيها. نحن بحاجة إلى إيجاد العنصر الذي يتكرر أكثر من مرة والذي يكون مؤشر ظهوره الأول هو الأصغر. | firstRepeatingElement.cpp |
بالنظر إلى قائمة الأعداد الصحيحة غير المصنفة، A={a 1 ,a 2 ,…,a N }، ابحث عن زوج العناصر الذي يحتوي على أصغر فرق مطلق بينهما؟ إذا كان هناك عدة أزواج، فابحث عنها جميعًا. | Close_numbers.cpp |
بالنظر إلى مصفوفة مرتبة، حدد فهرس النقطة الثابتة في هذه المصفوفة. إذا لم يكن لدى المصفوفة نقطة ثابتة ترجع -1. تحتوي المصفوفة على نقطة ثابتة عندما يكون فهرس العنصر هو نفس الفهرس، أي i == arr[i]، التعقيد الزمني المتوقع O(logn) | FixedPoint.cpp |
أوجد الحد الأقصى للعنصر في المصفوفة الذي يتزايد أولاً ثم يتناقص. الإدخال: arr[] = {8, 10, 20, 80, 100, 200, 400, 500, 3, 2, 1}, الإخراج: 500. قد تكون المصفوفة متزايدة أو متناقصة بشكل صارم أيضًا. تعقيد الوقت المتوقع هو O(تسجيل الدخول). | findMaximum.cpp |
بالنظر إلى مصفوفة من الأعداد الصحيحة الموجبة و/أو السالبة، ابحث عن زوج في المصفوفة يكون مجموعه الأقرب إلى 0. | findClosestPairToZero.cpp |
كان لدى الفنان نوميروس قائمتان A وB، بحيث كانت B عبارة عن تبديل لـ A. وكان نوميروس فخورًا جدًا بهذه القائمتين. لسوء الحظ، أثناء نقلها من معرض إلى آخر، تم ترك بعض الأرقام خارج أ. هل يمكنك العثور على الأرقام المفقودة؟ ملحوظات:
| MissingNumbers.cpp |
ابحث عن أقرب زوج من صفيفين مفروزين. بمعلومية مصفوفتين مفروزتين ورقم x، ابحث عن الزوج الذي يكون مجموعه أقرب إلى x ويحتوي الزوج على عنصر من كل مصفوفة. لقد حصلنا على مصفوفتين ar1[0…m-1] و ar2[0..n-1] ورقم x، نحتاج إلى إيجاد الزوج ar1[i] + ar2[j] بحيث تكون القيمة المطلقة لـ (ar1) [i] + ar2[j] – x) هو الحد الأدنى. | ClosePairSorted.cpp |
بالنظر إلى مصفوفة A من عناصر n، ابحث عن ثلاثة مؤشرات i وj وk بحيث A[i]^2 + A[j]^2 = A[K]^2. O(n2) التعقيد الزمني وO(1) التعقيد المكاني | SquareSum.cpp |
بالنظر إلى مصفوفة غير مصنفة arr[0..n-1] بالحجم n، ابحث عن الحد الأدنى لطول المصفوفة الفرعية arr[s..e] بحيث يؤدي فرز هذه المصفوفة الفرعية إلى فرز المصفوفة بأكملها. | minLengthUnsortedArray.cpp |
العثور على الرقم المفقود في التقدم الحسابي | MissingNumber2.cpp |
أوجد العناصر المشتركة في 3 ناقلات مرتبة | commonIn3Arrays.cpp |
ابحث عن جميع الأزواج ذات مجموع معين في مصفوفة/متجه غير مصنف | find_pairs_with_sum.cpp |
بالنظر إلى المصفوفة، ابحث عن عنصر الذروة فيها. عنصر الذروة هو عنصر أكبر من جيرانه. | peak_element.cpp |
بالنظر إلى مجموعة مرتبة من الأعداد الصحيحة غير السالبة، ابحث عن أصغر عنصر مفقود فيها. | أصغر_مفقود.cpp |
انقل جميع الأصفار في المتجه إلى النهاية | move_zeros.cpp |
مشكلة | حل |
---|---|
عمق الاجتياز الأول للرسم البياني | dfsDemo.cpp |
اتساع الاجتياز الأول للرسم البياني | bfsDemo.cpp |
احسب أقصر مسافة من موضع البداية (العقدة S) إلى جميع العقد الأخرى في الرسم البياني باستخدام خوارزمية Dijkstra. | dijkstra-shortest-reach.cpp |
حساب الوزن الإجمالي للحد الأدنى من الشجرة الممتدة لرسم بياني معين (مجموع أوزان الحواف التي تشكل MST) باستخدام خوارزمية Prim | primsMST.cpp |
اطبع الحد الأدنى من الشجرة الممتدة (MST) لرسم بياني معين باستخدام خوارزمية كروسكال. | kruskalMST.cpp |
إنشاء برنامج لإنشاء ترميز هوفمان لكل حرف كجدول. | huffman_encoding.cpp |
ابحث عن كلمة معينة في لوحة ثنائية الأبعاد تحتوي على أحرف. يمكن إنشاء الكلمة عن طريق اجتياز الخلايا الأفقية أو الرأسية المجاورة بالتتابع. في تسلسل تكوين الكلمة، لا يمكن استخدام الحرف الموجود في نفس الموضع أكثر من مرة. (راجع أعلى الملف للحصول على أمثلة.) | Grid_word_search.cpp |
بالنظر إلى شاشة ثنائية الأبعاد، وموقع البكسل والقيمة الجديدة للون المراد ملؤه، استبدل لون البكسل وكل البكسلات المجاورة (أعلى، أسفل، يسار، يمين) بنفس اللون الجديد. هذا هو نفس ملء الفيضان (تذكر رمز الجرافة) لمنطقة في MS-PAINT. | float_fill.cpp |
مشكلة | حل |
---|---|
بالنظر إلى مصفوفتين من الأعداد الصحيحة، A وB، يحتوي كل منهما على عدد صحيح N. أنت حر في تبديل ترتيب العناصر في المصفوفات. هل هناك تبديل A' وB' ممكن لـ A وB، بحيث يكون A' i + B' i ≥ K لكل i، حيث يشير A'i إلى العنصر i في المصفوفة A' و B'i العنصر الأول في المصفوفة B'. | two_arrays.cpp |
جون يتلقى الأوامر. يتم تقديم الطلب الأول من قبل العميل الأول في الوقت المحدد ويستغرق الأمر بعض الوقت للتنفيذ. ما هو الترتيب الذي سيحصل به العملاء على طلباتهم؟ (انظر المزيد من التفاصيل في تعليقات الحلول) | Orders_order.cpp |
مشكلة | حل |
---|---|
لقد تم إعطاؤك سلسلة أرقام (على سبيل المثال "1234"، "567" وما إلى ذلك)، وقم بتوفير جميع مجموعات الأحرف الممكنة التي يمكن أن نولدها من سلسلة الأرقام هذه، بناءً على التعيين الذي نراه على لوحة الاتصال بالهاتف/الجوال. إذا قمت بكتابة الرسائل القصيرة في الهواتف ذات الطراز القديم، ستعرف ذلك. على سبيل المثال، يتم تعيين "1" إلى "abc"، ويتم تعيين 2 إلى "def". بإمكانك الرجوع إلى الصورة..
| Dialpad_combinations.cpp |
تنفيذ عملية تصنيع أنماط أحرف البدل مع دعم "؟" & '' '.
| Wild_card_matching.cpp |
من خلال لوحة ثنائية الأبعاد وقائمة كلمات من القاموس، يمكنك العثور على جميع الكلمات الممكنة على اللوحة من القائمة. (راجع المثال في الحل) | word_search.cpp |
مشكلة | حل |
---|---|
بالنظر إلى مصفوفة أعداد صحيحة مرتبة دون تكرارات، قم بإرجاع ملخص نطاقاتها. على سبيل المثال، بالنظر إلى [0,1,2,4,5,7]، قم بإرجاع ["0->2"، "4->5"، "7"]. | Summary_ranges.cpp |
نظرا لمصفوفة ثنائية الأبعاد، مع الخصائص التالية
| search2DII.cpp |
بالنظر إلى مصفوفة أعداد صحيحة غير مصنفة، ابحث عن أول عدد صحيح موجب مفقود. مثال: [1,2,0] يجب أن يُرجع 3 و [3,4,-1,1] يجب أن يُرجع 2. التعقيد الزمني المتوقع O(n) والحل يجب أن يُرجع استخدام مساحة ثابتة | firstMissingPositiveNum.cpp |
بمعلومية مصفوفة من الأعداد الصحيحة غير مصنفة، أوجد طول أطول تسلسل عناصر متتالية. على سبيل المثال: معطى [100، 4، 200، 1، 3، 2]. أطول تسلسل للعناصر المتتالية هو [1، 2، 3، 4]. إرجاع طولها: 4. يجب أن تعمل الخوارزمية بتعقيد O(n). | longConsecutiveSeq.cpp |
بالنظر إلى صفيفتين صحيحتين مفروزتين nums1 وnums2، قم بدمج nums2 في nums1 كمصفوفة واحدة مفروزة. قد تفترض أن nums1 به مساحة كافية (حجم أكبر أو يساوي m + n) لاستيعاب عناصر إضافية من nums2. عدد العناصر التي تمت تهيئتها في nums1 وnums2 هي m وn على التوالي. | mergeArrays.cpp |
بالنظر إلى مصفوفة من الأعداد الصحيحة غير السالبة، يتم وضعك مبدئيًا في الفهرس الأول للمصفوفة. يمثل كل عنصر في المصفوفة الحد الأقصى لطول القفزة في هذا الموضع. حدد ما إذا كنت قادرًا على الوصول إلى الفهرس الأخير. على سبيل المثال:
| JumpGame.cpp |
في حالة وجود عدد صحيح موجب، قم بإرجاع عنوان العمود المقابل له كما يظهر في ورقة Excel. على سبيل المثال 1 -> A، 2 -> B،...26 -> Z، 27 -> AA، 28 -> AB، ...705 -> AAC | excelColSheetTitle.cpp |
بالنظر إلى أرقام المصفوفة، اكتب دالة لنقل جميع الأصفار إلى نهايتها مع الحفاظ على الترتيب النسبي للعناصر غير الصفرية. على سبيل المثال، إذا كانت الأعداد = [0، 1، 0، 3، 12]، بعد استدعاء الدالة، يجب أن تكون الأعداد [1، 3، 12، 0، 0]. | moveZeroes.cpp |
بالنظر إلى مصفوفة من الأعداد الصحيحة، اكتشف ما إذا كانت المصفوفة تحتوي على أي تكرارات. يجب أن تُرجع الدالة صحيحًا إذا ظهرت أي قيمة مرتين على الأقل في المصفوفة، ويجب أن تُرجع خطأ إذا كان كل عنصر مميزًا. | يحتوي على Duplicate.cpp |
عند الحصول على قائمة، قم بتدوير القائمة إلى اليمين بمقدار k من الأماكن، حيث تكون k غير سالبة. على سبيل المثال:
| RotateList.cpp |
بمعرفة كلمتين word1 وword2، أوجد أقل عدد من الخطوات المطلوبة لتحويل word1 إلى word2. (يتم احتساب كل عملية كخطوة واحدة). لديك العمليات الثلاث التالية المسموح بها على الكلمة:
| EditDistance.cpp |
بالنظر إلى شجرة ثنائية، قم بملء كل مؤشر تالي للإشارة إلى العقدة اليمنى التالية. إذا لم تكن هناك العقدة اليمنى التالية، فيجب تعيين المؤشر التالي إلى NULL. في البداية، يتم تعيين كافة المؤشرات التالية على NULL. يمكنك فقط استخدام مسافة إضافية ثابتة. وقد تفترض أنها شجرة ثنائية مثالية (أي، جميع الأوراق في نفس المستوى، وكل والد لديه طفلان). | ConnectNextPointers.cpp |
بالنظر إلى عدد n من الأقواس، اكتب دالة لإنشاء جميع مجموعات الأقواس جيدة التكوين. على سبيل المثال، إذا كانت n = 3، فإن مجموعة الحلول هي "((()))"، "(()())"، "(())()"، "()(())"، "( )()()" | create_parentesis.cpp |
في حالة وجود مصفوفة تحتوي على n أرقام مميزة مأخوذة من 0، 1، 2، ...، n، ابحث عن الرقم المفقود من المصفوفة. على سبيل المثال، الأعداد المعطاة = [0، 1، 3] تُرجع 2. | Missing_number.cpp |
لنفترض أن مصفوفة مرتبة تم تدويرها عند نقطة محورية غير معروفة لك مسبقًا. (أي 0 1 2 4 5 6 7 قد يصبح 4 5 6 7 0 1 2). العثور على العنصر الأدنى. قد تفترض عدم وجود تكرار في المصفوفة. | find_min_rotated.cpp |
بالنظر إلى مصفوفة S من الأعداد الصحيحة n، ابحث عن ثلاثة أعداد صحيحة في S بحيث يكون المجموع أقرب إلى رقم معين، الهدف. إرجاع مجموع الأعداد الصحيحة الثلاثة. قد تفترض أن كل إدخال سيكون له حل واحد بالضبط. | threeSumClosest.cpp |
بالنظر إلى n أعداد صحيحة غير سالبة a 1 , a 2 , ..., a n ، حيث يمثل كل منها نقطة عند الإحداثي (i, a i ). يتم رسم الخطوط العمودية بحيث تكون نقطتي نهاية الخط i عند (i, a i ) و (i, 0). ابحث عن خطين يشكلان مع المحور السيني حاوية، بحيث تحتوي الحاوية على أكبر قدر من الماء. ملحوظة: لا يجوز لك إمالة الحاوية. | maxArea.cpp |
بالنظر إلى شجرة ثنائية تحتوي على أرقام من 0 إلى 9 فقط، يمكن أن يمثل كل مسار من الجذر إلى الورقة رقمًا. مثال على ذلك هو المسار من الجذر إلى الورقة 1->2->3 الذي يمثل الرقم 123. أوجد المجموع الإجمالي لجميع الأرقام من الجذر إلى الورقة. مثال في تعليقات الحل | sumRootToLeafNumbers.cpp |
لنفترض أن لديك مصفوفة يكون العنصر الأول فيها هو سعر سهم معين في اليوم الأول. إذا كان مسموحًا لك فقط بإكمال معاملة واحدة على الأكثر (أي شراء واحدة وبيع سهم واحد من الأسهم)، فقم بتصميم خوارزمية للعثور على الحد الأقصى للربح. | maxProfitStock.cpp |
نظرًا لأن شبكة amxn مليئة بالأرقام غير السالبة، ابحث عن مسار من أعلى اليسار إلى أسفل اليمين مما يقلل مجموع جميع الأرقام على طول مسارها. ملحوظة: لا يمكنك التحرك إلا للأسفل أو لليمين في أي وقت. | minPath.cpp |
حساب عدد الأعداد الأولية الأصغر من العدد غير السالب، n. | countPrimes.cpp |
ابحث عن جميع المجموعات الممكنة من أرقام k التي تضيف ما يصل إلى رقم n، مع العلم أنه يمكن استخدام الأرقام من 1 إلى 9 فقط ويجب أن تكون كل مجموعة مجموعة فريدة من الأرقام. تأكد من ترتيب الأرقام الموجودة داخل المجموعة بترتيب تصاعدي. مثال: بالنسبة إلى k = 3، n = 9 ستكون النتيجة [[1,2,6]، [1,3,5]، [2,3,4]]، وبالمثل بالنسبة إلى k = 3، n = 7، النتيجة سيكون [[1،2،4]]. | combinSum3.cpp |
في حالة وجود عدد صحيح غير سالب، أضف جميع أرقامه بشكل متكرر حتى تحتوي النتيجة على رقم واحد فقط. على سبيل المثال: بالنظر إلى الرقم = 38، تكون العملية كما يلي: 3 + 8 = 11، 1 + 1 = 2. بما أن 2 يحتوي على رقم واحد فقط، قم بإعادته. المتابعة: هل يمكنك القيام بذلك دون أي حلقة/تكرار في وقت تشغيل O(1)؟ | addDigits.cpp |
بالنظر إلى مصفوفة ذات قيم خلايا 0 أو 1. ابحث عن طول أقصر مسار من (a1, b1) إلى (a2, b2)، بحيث لا يمكن إنشاء هذا المسار إلا من خلال الخلايا التي لها قيمة 1 ولا يمكنك السفر إلا في 4 الاتجاهات الممكنة، أي اليسار واليمين، صعودا وهبوطا. | shortest_path_maze.cpp |
مسافة Hamming بين عددين صحيحين هي عدد المواضع التي تختلف فيها البتات المقابلة. بمعلومية عددين صحيحين x وy، احسب مسافة هامينغ. | hamming_distance.cpp |
بالنظر إلى شجرتين ثنائيتين، وتخيل أنه عندما تضع إحداهما لتغطية الأخرى، فإن بعض عقد الشجرتين تتداخل بينما لا تتداخل العقد الأخرى. تحتاج إلى دمجها في شجرة ثنائية جديدة. قاعدة الدمج هي أنه إذا تداخلت عقدتان، فسيتم جمع قيم العقدة كقيمة جديدة للعقدة المدمجة. وبخلاف ذلك، سيتم استخدام العقدة NOT الخالية كعقدة للشجرة الجديدة. | merge_trees.cpp |
اكتب دالة تأخذ سلسلة كمدخلات وتعكس فقط حروف العلة في السلسلة. | reverse_vowels.cpp |
في حالة وجود سلسلة، قم بفرزها بترتيب تنازلي بناءً على تكرار الأحرف. على سبيل المثال:
| SortCharByFrequency.cpp |
منتج المصفوفة باستثناء الذات. بالنظر إلى مصفوفة من الأعداد الصحيحة n حيث n > 1، nums، قم بإرجاع مخرجات مصفوفة بحيث يكون الإخراج [i] مساويًا لمنتج جميع عناصر nums باستثناء nums[i]. | Product_except_self.cpp |
بالنظر إلى مصفوفة مرتبة، قم بإزالة التكرارات في مكانها وأعد الطول الجديد. لا يهم ما هو موجود في المصفوفة خارج حجم العناصر الفريدة. المتوقع O(1) الفضاء والتعقيد الزمني O(n). | Remove_duplicates.cpp |
حساب عدد الجزر في الشبكة. بالنظر إلى شبكة تمثل 1 كجسم أرضي، و0 كجسم مائي، حدد عدد الجزر (مزيد من التفاصيل في تعليقات المشكلة) | count_islands.cpp |
ابحث عن الوسيط من دفق البيانات. صمم بنية بيانات تدعم addNum لإضافة رقم إلى الدفق، وfindMedian لإرجاع متوسط الأرقام الحالية التي تمت رؤيتها حتى الآن. أيضًا، إذا كان عدد الأرقام زوجيًا، فسيتم إرجاع متوسط العنصرين الأوسطين، وإرجاع المتوسط بخلاف ذلك. | median_stream.cpp |
قم بإزالة الحد الأدنى لعدد الأقواس غير الصالحة لجعل سلسلة الإدخال صالحة. إرجاع كافة النتائج الممكنة. ملاحظة: قد تحتوي سلسلة الإدخال على رسائل أخرى غير أقواس (و) | remove_invalid_parenthesis.cpp |
بالنظر إلى صفيف وقيمة ، قم بإزالة جميع مثيلات هذه القيمة في مكانها وإرجاع الطول الجديد. لا تخصص مساحة إضافية لمجموعة أخرى ، يجب عليك القيام بذلك عن طريق تعديل صفيف الإدخال في مكان مع O (1) ذاكرة إضافية. يمكن تغيير ترتيب العناصر. لا يهم ما تتركه وراء الطول الجديد. | remove_element.cpp |
ابحث عن تقاطع صفيفتين/متجهات ، نظرًا لوجود اثنين من المتجهات نتيجة تفاعلها. يجب أن تحتوي النتيجة فقط على أحرف فريدة من نوعها ويمكن أن تكون بأي ترتيب | intersection_of_array.cpp |
بالنظر إلى نمط وسلسلة Str ، ابحث عن ما إذا كان STR يتبع نفس النمط. هنا يعني المباراة الكاملة ، بحيث يكون هناك اعتراض بين خطاب في نمط وكلمة غير فارغة في STR. مثال: | |
pattern = "abba" ، str = "dog cat cat dog" يجب أن يعود صحيحًا. | |
pattern = "abba" ، str = "dog cat cat fish" يجب أن يعود كاذب. | |
pattern = "aaaa" ، str = "dog cat cat dog" يجب أن يعود خطأ. | |
pattern = "abba" ، str = "Dog Dog Dog Dog" يجب أن يعود خطأ. | Word_pattern.cpp |
يتم تزويدك متجهًا بالأرقام ، حيث يمثل كل رقم | |
سعر الأسهم في يوم إيث. إذا سمح لك بإكمال فقط | |
صفقة واحدة في اليوم (أي شراء واحدة وبيع سهم واحد) ، والتصميم | |
خوارزمية للعثور على أقصى ربح. | Best_time_to_buy_sell.cpp |
بالنظر إلى جملة ، عكس ترتيب الأحرف في كل كلمة داخل جملة مع الحفاظ على المسافة البيضاء وترتيب الكلمات الأولي. | |
مثال: | |
المدخلات: تحب الشوكولاتة | |
الإخراج: EHS Sevol etalocohc | revers_words.cpp |