30 באפריל 2017

Second max on numbers array - הצעה לפתרון

בפוסט זה נציע פתרון לבעיה שהוצגה בפוסט הקודם.

ראשית, ננסה לתת מספר רמזים כדי לעזור למי שנתקע ורוצה עוד לחשוב ולבסוף נציג הצעה לפתרון.



עזרה ראשונה

  • אם אין לך רעיון מהיכן להתחיל, נסה לכתוב בהתחלה פונקציה של מקסימום רגיל. שאל את עצמך מה ניתן לעשות בנקודה בה מתגלה מקסימום נוסף.
  • זכור שכדי לדעת מה המקסימום השני, עליך לדעת גם את המקסימום הראשון.

עזרה שנייה

  • בדוק מקרים בהם המקסימום הראשון מגיע קודם ומקרים בהם המקסימום השני מגיע קודם.
  • שים לב שייתכנו מספרים שליליים - אתחל את המשתנים שלך נכון.
  • שים לב לשימוש בשמות שמורים כמו max

פתרון


הסבר


ראשית, שימו לב שהפתרון כתוב ב- Python 3. במידה ואתם עובדים על Python 2 הוא יהיה מעט שונה.

שנית, בחרתי לאתחל את המשתנים למינוס אינסוף בתור הערך הקטן ביותר במקום ל-None כדי לא ליפול בהשוואה. אני מניח שניתן לפתור את הבעיה הזו אחרת.

הפונקציה רצה על המערך ומבצעת שתי בדיקות:

הבדיקה הראשונה היא במקרה שהמספר גדול מהמקסימום הראשון, הערך הנוכחי של המקסימום הראשון נשמר לתוך המקסימום השני.

הבדיקה השניה היא במקרה שהמספר אינו גדול מהמקסימום הראשון אך כן גדול מהמקסימום השני.

שימו לב שאם תבצעו רק בדיקה אחת - הקוד ייכשל.


אין תגובות:

הוסף רשומת תגובה