14 במאי 2017

Equilibrium index on array

רמת קושי: בינוני

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

LeetCode

דרישות:
  • יעילות זמן - n
  • יעילות מקום - 1
  • במידה וקיימים מספר אינדקסים מתאימים - יש להחזיר את הראשון

יש לשאלה זו מספר וריאציות: קלה יותר - בה מתקבל הפתרון הטריביאלי וקשה יותר - בה דורשים את כל האינדקסים במקום אינדקס יחיד.

אתייחס אליהן בפתרון.

איך ניגשים:

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

שנית, ישנם שאלות דומות לשאלה זו שעלולות להטעות אתכם, שימו לב שמבוקש האינדקס במערך ולא הסכום.

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

להלן קוד התחלתי:

אין תגובות:

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