קלט: רשימה של שורות מספרים באורכים שונים.
פלט: בכמה שורות מופיע כל מספר.
תשובות
הוסף תשובה
|
לצפיה בתשובות
אפריל 2019
-פתרון ראשון-
סט (האשמאפ) שבו הקיי הוא המספר, והווליו הוא מספר השורה בה הוא נמצא. חשוב להשתמש בסט בשל התכונות שלו, הראשונה היא שהוא מסייע בעניין הכפילות (אם מספר מופיע פעמיים בשורה, יש לספור את השורה פעם אחת), והשניה היא היעילות הזולה שבהכנסה והוצאה מהאשמאפ.
-פתרון שני: ללא שימוש במבני נתונים נוספים, אלא רק משחק על הקלט-
נמיין כל שורה בפני עצמה, ובכל שורה נשווה בין מספרים זהים על מנת להימנע מכפילות.
נתונה רשימה של שורות של מספרים (לאו דווקא שוות באורך)
צריך למצוא עבור כל מספר ברשימה בכמה שורות הוא מופיע וזמן ריצה.
למשל:
2, 3 , 407, 105
3, 5, 3, 8
4, 6, 2, 1
אז עבור המספר 3 למשל הוא מופיע ב2 שורות
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2019
אפשר לפתור ב O(n כשn זו כמות המספרים. הפתרון הוא כזה:
יוצרים טבלת גיבוב hash table שהמפתחות בה הם המספרים והערכים הם מבנה נתונים נוסף ששם שומרים את מספרי השורות בהן מופיע המספר (לדוגמה עבור 3 נשמור את שורות 1 ו2). צריך שבמבנה זה יהיה ניתן להכניס בO(1 בלי כפילויות (אפשר למשל להשתמש בטבלת גיבוב נוספת), מה שמעניין אותנו בסוף זה כמות הנתונים במבנה
מרץ 2019
יצירת אובייקט, כאשר ה keys אלו המספרים וכל value מציין את מספר המופעים.
שלב 1 ראיון מקצועי
שלב 2 ראיון מקצועי ברמה גבוהה יותר
שאלות מתוך הראיון
נשאלה שאלה על הפרוייקט - OOP ולאחר מכן התבקשתי לממש פתרון שמאפשר למשתמש לקנות מוצר מתוך החנות - ההתעסקות הייתה בעיקר באיך להגן על כך שלא יקנו יותר מוצרים ממה שיש במלאי , ואיך מטפלים ביותר ממשתמש אחד שמבקש לקנות מוצר מסויים.
מצא פלט של תוכנית בשפת C - (התוכנית הייתה לחפש SubString בתוך מחרוזת)
ומחזירה את האות הראשונה של המחרוזת אם נמצא אחרת מחזירה 0.