اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

سؤالك غير واضح أو يبدوا أنك لم تقم بطرحه بالشكل الصحيح .

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

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

لهذا فالبطبع إبتكارك للحل هو إبتكار لخوارزمية للمشكلة التي تعمل عليها .

ونعم بالطبع يمكنك إستخدام هياكل البيانات المتاحة في اللغة التي تعمل عليها مثل القوائم و الأشجار و  المصفوفات و القواميس و غيرها من هياكل البيانات الأخرى . ويمكنك إنشاء أى هيكل بيانات خاص بك تراه مناسبا لحل المشكلة التي تعمل عليها.

أى أولا يجب عليك إنشاء الخوارزمية المناسبة للحل لك ومن ثم يمكنك إنشاء أو إستخدام أى هيكل بيانات يساعدك في تنفيذ تلك الخوارزمية. 

  • 0
نشر

المطلوب منك إيجاد حل فعال وصحيح للمشكلة في أقصر وقت ممكن، مع مراعاة الأداء وهما الزمن والمساحة، ولا يُتوقع منك ابتكار هياكل بيانات أو خوارزميات جديدة كليًا من الصفر، بل الاعتماد على الأدوات والمفاهيم المعروفة كالمصفوفات، القوائم المرتبطة، الأشجار، Hash Tables، الخوارزميات الجشعة، البحث الثنائي، أو البرمجة الديناميكية، وتكييفها لحل المشكلة المحددة.

الأهم فهم المشكلة من خلال قراءة الوصف وتحديد المطلوب، ثم اختيار الأداة المناسبة بتحديد هيكل البيانات أو الخوارزمية الأنسب حسب طبيعة المشكلة، وبعد الحل تستطيع تحسين أداء الكود، المهم في البداية الوصول للحل.

مثلاً لو المشكلة تتطلب البحث السريع عن عنصر، فالـ Hash Tables هي الخيار الأمثل، ولو بحاجة إلى ترتيب البيانات، فستعتمد على خوارزميات الترتيب QuickSort أو MergeSort.

بالطبع أحيانًا تحتاج أحيانًا إلى توظيف ما تعلمته وربط المفاهيم ببعضها، أي تعديل هيكل بيانات أو خوارزمية موجودة لتناسب المشكلة، أو الجمع بين أكثر من أداة كاستخدام Heap مع بحث ثنائي Binary Search.

كنصيحة، تعلم الأنماط الشائعة للمشاكل ومنها Two Pointers، Sliding Window، DFS/BFS وكيفية تطبيقها، وذلك سيوفر عليك الكثير الوقت، لأن معظم مسائل LeetCode مبنية على أنماط متكررة تستطيع حلها بأدوات معروفة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...