المبرمجين تعلم كيف هياكل البيانات والخوارزميات؟

الكاتب | الأرض وسيم

ذبيان | قوه روي

أهمية هياكل البيانات والخوارزميات للمبرمجين وغني عن القول، لتبادل مقالتي القادمة سوف تتعلم كيفية هياكل البيانات والخوارزميات، وآمل مساعدتكم.

الاختصار خوارزمية التعلم هو لتنظيف السؤال

اختصار القول، وأعتقد أنه من أسفل إلى الأرض، والعنوان الفرشاة.

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

وبعبارة أخرى، إذا ذهبت إلى هذه المواقع، مثل الأسئلة leetcode فرشاة، ثم لديك ليكون لها أساس معين. قاعدة ما يلي:

  • الهياكل المشتركة البيانات: القوائم المرتبطة، وأشجار (على سبيل المثال، ثنائي).
  • المشتركة فكرة الخوارزمية: طريقة الجشع، فرق تسد، طريقة القوة الغاشمة، البرمجة الديناميكية، التراجع.

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

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

  • وتحليل الخوارزميات تحليل: هذا هو بسيط نسبيا بالنسبة للقادمين الجدد لنرى.
  • هياكل البيانات والخوارزميات لغة التحليل --C لوصف:، فمن المستحسن قانون مكتوب في C لنرى.
  • التحديات برمجة مسابقة (الطبعة الثانية): هو كتاب جيد جدا، فمن المستحسن أن نرى.

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

تلخيص، وتحسين هياكل البيانات والخوارزميات اختصار شيء، وأفضل الاختصار لتنظيف هذه المسألة. ومع ذلك، فإن فرضية السؤال هو أن تقوم بتنظيف أولا معرفة بعض هياكل البيانات الأساسية والخوارزميات التفكير.

السعي وراء الكمال

كيف لتنظيف السؤال؟ كيفية التعامل مع مشكلة الخوارزمية؟

وأعتقد أنه في القيام عندما يجب علينا التشكيك في السعي لتحقيق الكمال، ثم لا تترك سؤالا للقيام بذلك، مقدمة من قبل، ثم واحد القادم بسرعة.

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

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

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

واسمحوا لي أن أقدم لكم عينة البند ما يلي:

ضفدع يمكن القفز على مستوى الفئة 1، يمكنك أيضا قفز على مستوى 2. قفز الضفدع تسعى للحصول على مجموعه N الرتب كم من القفزات؟

الأسلوب 1: العنف تكراري

هذا السؤال ليست صعبة، وكنت قد يستغرق النهج التالي:

ساكنة العام INT حل (كثافة العمليات ن) { إذا (ن == 1 || ن == 2) { العودة ن. } آخر إذا (ن < = 0) { العودة 0؛ } {شيء آخر عودة حل (ن 1) + حل (ن 2)؛ } }

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

أسلوب اثنين: مساحة للوقت

السعي لتحقيق الكمال، يمكننا النظر في استخدام الفضاء للمرة: هذا السؤال هو أن تذهب للتفكير في الامر بعناية، وسوف تجد الكثير منهم تكرار تنفيذها. حتى تتمكن من اتخاذ الطرق التالية:

// استخدام HashMap لتخزين حالة تم احتساب ساكنة خريطة < صحيح، صحيح >  خريطة = HashMap جديد ()؛ ساكنة العام INT حل (كثافة العمليات ن) { إذا (ن < = 0) العودة 0؛ الا اذا (ن < = 2) { العودة ن. } عدا {// إذا تحسب إذا (map.containsKey (ن)) { العودة map.get (ن)؛ } {شيء آخر الباحث م = حل (ن 1) + حل (ن 2)؛ map.put (ن، م)؛ العودة م؛ } } }

في هذه الطريقة، فإنه يمكن تقصير كبير في الوقت. وهذا هو، عندما سؤال لديك، تجد الوقت تعقيد عالية، ثم التي تليها يمكن النظر في ما إذا كان هناك طريقة أفضل، إذا كان يمكنك استخدام الفضاء لكسب الوقت.

أسلوب ثلاثة: عدد فيبوناتشي

في الواقع، يمكن أن نحصل على تعقيد المكاني هو أصغر، لا تحتاج إلى حفظ HashMap الدولة:

ساكنة العام INT حل (كثافة العمليات ن) { إذا (ن < = 0) العودة 0؛ إذا (ن < = 2) { العودة ن. } الباحث F1 = 0؛ الباحث F2 = 1؛ مبلغ كثافة العمليات = 0؛ ل(كثافة العمليات ط = 1؛ ط < = N؛ ط ++) { مبلغ = F1 + F2. F1 = F2. F2 = المبلغ. } العودة المبلغ. }

أحصل على هذا السؤال كما ترى، هذا السؤال ليس ليعلمك كيف نفعل ذلك، ولكن أغراض التالية:

  • في مشكلة الفرشاة، وعلينا أن نسعى لتحقيق الكمال.
  • أنا لا أفكر في كيف يمكن لهذه الأساليب؟ ثم يمكنك ان ترى الآخرين يفعلون. بعد اللقاء مشكلة مماثلة، سيكون لديك المزيد من الأفكار، والمزيد من المعرفة أي اتجاه للتفكير.
  • العنف يمكن أن تبدأ مع بسيطة قيام السؤال، قليلا من تدبير لتحسين المكان والزمان في.

بعض المواقع الموصى بها عنوان فرشاة

وعادة ما leetcode والماشية في مشاكل في الشبكة فرشاة قبالة، شعور جيد جميلة، وليس صعوبة كبيرة للموضوع.

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

بالطبع، هناك غيرها من موقع المشاكل فرشاة، ولكن لم مواقع أخرى لا تنظف خارج، ولست متأكدا كيف.

وإلى جانب بنية بيانات

الجبهة الرئيسية يقال هو كيف وعادة ما تعلم الخوارزمية. في طريقة بنية بيانات، أنا فقط المدرجة يجب دراسة القائمة وشجرة (كومة الثنائية)، ولكن هذه هي معظم الأسئلة الأساسية قبل الفرشاة لسيده. لهياكل البيانات، ولقد أدرجت بعض من أكثر أهمية:

  • سلسلة (مثل قائمة مرتبطة منفردة، قائمة مرتبطة مضاعف).
  • شجرة (على سبيل المثال، الثنائية، وأشجار متوازنة والأحمر والأسود شجرة).
  • FIG (على سبيل المثال، عدة خوارزميات أقصر مسار).
  • طابور، المكدس، المصفوفة.

لهذه، يجب علينا أن ندرك الأيدي مرة أخرى. يمكنك قراءة كتاب، يمكنك أيضا مشاهدة أشرطة الفيديو، ويمكن للقادمين الجدد ننظر في الفيديو، ولكن الفيديو لا يزال مبكرا لمعرفة وقت متأخر من القراءة.

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

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

الكاتب: وسيم، والبرمجة الحب واحد في المدرسة، بلدي العالم ليس فقط الترميز، فضلا عن الكتابة. صيانة عدد اكتتاب حاليا "من الصعب إجبار المزارعين كود"، التي تركز على كتابة الخوارزميات وهياكل البيانات، جافا، وشبكة الكمبيوتر.

تنويه: هذه المادة هي المساهمات الشخصية للمؤلف، وأنه ينتمي إلى كل شيء.

القراءة الموصى بها:

  • جوجل هي السماء!
  • رن يدعى ليو تشيانغ الشرق، بل كان جائعا والاندماج سمعته؛ تسلا فائقة بنز | المهوسون العناوين
  • من أجل كسب المال لمعرفة كيفية النظر في البرمجة؟
  • الحرس الروبوت بوسطن ديناميكس، كان الجنس البشري غير قادر على وقف قفزة في الثلاثي!
  • قرد الانتقال إلى مبرمج، ليعلمك "نوع خارجي"
  • Web3.0 قادمة! لعب تغيرت
  • لماذا علي الخنزير الطائر، قطرات، وتم استجواب كتريب إساءة البيانات الكبيرة قتل المطبوخة؟

2018 مؤتمر مطوري AI

يتطلب المهندسين AI الجمعية

مؤتمر 2018 AI المطور هو حدث سنوي مشترك من قبل الصينيين والخبراء الأمريكيين لخلق الذكاء الاصطناعي تكنولوجيا منظمة العفو الدولية والصناعة! نحن نتحدث عن التكنولوجيا، ورفض الحديث!

هناك 10 العروض التقنية المنتدى: رؤية الكمبيوتر، وتحليل البيانات، والتعلم الآلي، وخرائط المعرفة، والحكمة المالية، والقيادة الذكية والتكنولوجيا الكلام، والحكمة الطبية، وأدوات التعلم الآلي، معالجة اللغات الطبيعية.

هناك 15+ قوة وادي السليكون من المدربين، 80 + رائدة في مجال التكنولوجيا AI في شخصية محورية، 100 قوة وسائل الإعلام + التقنية، 1500 + AI الفنية المطور

الاعتراف تحت Fanger كود وي، وصولا سريعا إلى الجمعية العامة لمزيد من المعلومات وللحصول على أقل تذاكر مخفضة!

انقر على "اقرأ الأصلي" كما يمكن تسجيل على الفور.

هل أعطيت آمنة الطعام؟ التي بكين "السنة الجديدة تطمئن" الاختيار كبير وضرب فندق Houchu

Jingdong 618 أكبر الدخن الفائز، مستخدمين الرد أمر مثير للسخرية تماما!

لماذا تخليت عن جافا، جافا سكريبت، حساب روبي، في محاولة لإيجاد لغة البرمجة الجديدة؟

ملك المكان الذي يمكن أن يستمر لأول مرة لاختبار تحوم H6 كوبيه

أمك تدعو لك ارتداء طويلة أصدقاء جونز: الوشق مزدوجة 11 Kuangxiao 4740000 زيادة 34

مدينة يونهاب بكين داشينغ لبناء نموذج جديد للانتقال إلى مجتمع "الأحمر الملكية" الحكم

قطعة عن طريق القوارب، ملك البحر بالشوكة، عليك أن ترغب في قهر المحيط لينكولن نافيجيتور!

الراتب 30K ~ 50K، والناس في هذا المجال يجري هائج!

للتو التجربة! لشاحنة وسيم حقا، حتى كان الرعب السوبر!

المبرمجين جوجل كيف أبحاث منظمة العفو الدولية؟

قيمة الين، سواء الاستخبارات على الانترنت، هيسنس الأقوى في تاريخ "الجيش" صدمة لاول مرة AWE2019

ذهبت إلى ضفدع صغير عند والدتها بعد 90 اللاعبات في سوق ألعاب المحمول هناك الكثير من الإمكانيات