ישנן 2 רשימות מקושרות שבשלב מסויים הן מתאחדות לרשימה אחת. איך מוצאים את הנקודה שהן מתאחדות?
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2017
מכיון שהם מקושרות האיבר האחרון בהכרח יהיה זהה. ניקח אותו ונחבר אותו לראש אחת הרשימות, כעת נרוץ על השניה, זאת שלא שינינו. נמספר כל איבר שנגיע אליו, בסופו של דבר יתקבל איבר ממוספר כבר, כי יצרנו מעגל בעצם. זה האיבר בו יש איחוד.
התהליך היה מאוד נעים. המשרדים יפים מאוד. התחילו בשאלות על החברה האחרונה ועלי ולאחר מכן עברו לשאלות טכניות
שאלות מתוך הראיון
בנה פוקנציית replace(char[]original, char[] patternToFind, char[] newPattern) היה צריך לעשות את זה בלי מבנה נתונים נוסף ב(o(n והpattern החדש יכל להיות קצר או ארוך מזה שמחליפים
4 ראיונות: 2 טכניים, 1 - HR ועוד אחד עם מנהל ה-SITE
שאלות מתוך הראיון
בהינתן מחרוזת מסוימת input, תת מחרוזת str ומחרוזת substStr כתוב פונקציה שמוצאת את כל המופעים של str ב-input ומחליפה אותן ב-substStr. שים לב: אסור להשתמש בזכרון נוסף ואורך של substStr יכול להיות יותר גדול מזה של str
אחר כך תתבקש לייעל את הפתרון הנאיבי של O(n^2) ע"י preprocessing (רמז: ספור מספר מופעים של str וכמה מקום נוסף צריך בגלל שמחרוזת substStr יותר ארוכה.
בינתן 2 רשימות מקושרות עם איבר משותף אחד (יש 2 איברים שמצביעים אחד) מצא את האחד הזה (זה קל: חשב הפרש באורכים של רשומות ותתקדם על הארוכה כמספר האיברים שבהפרש לפני שתתחיל התקדם על הקצרה) - שוב, בלי זכרון נוסף.
חידת מחשבה:
2 קרונות בדיוק אם אותה התוכנה מוצנחים ב2 מקומות שונים על גבי פסי רכבת אינסופיים. המצנח נופל הצידה ונשאר שם.
צריך להרכיב תוכנה שתגרום להם להתנגש כאשר התוכנה היא לולאה אינסופית שמורכבת מהפעולות הבאות בלבד:
סע ימינה, סע שמאלה, או התניה "האם ראיתה אי פעם את המצנח של השני"
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2016
זה הפתרון שאני הייתי כותב:
צריך ש-2 הקרונות ייסעו לאותו הכיוון (ימינה או שמאלה), ובכל איטרציה של הלולאה, בעבור כל אחד מהקרונות, צריך לשאול את השאלה של המצנח. במידה והערך החוזר הוא חיובי - כל מה שצריך לעשות זה לשנות את כיוון הנסיעה של הקרון השני.