תרגיל טיפשי שאני לא מצליח

uvdude

New member
תרגיל טיפשי שאני לא מצליח

נתונה רשימה מקושרת חד-כיוונית של מספרים שלמים, נניח, זה לא משנה. מקבלים רשימה נוספת של מספרים, לא בהכרח אותו אורך. שתי הרשימות חוקיות, אין בהן לולאות, וכד'. צריך למצוא את הsuffix הגדול ביותר של הרשימות, אם הוא לא קיים, להחזיר null. צריך לעשות את זה בO(n) זמן, ובO(1) זכרון. אסור לשנות את מבנה הרשימות. דוגמה: נניח יש לי רשימה 1,2,5,7,8,9 ורשימה 4,4,7,8,9 - מה שנחזיר יהיה 7,8,9 כי זה הסיומת המשותפת הכי גדולה של שתי הרשימות. אני מניח שזה עניין טכני של קידום פוינטרים אבל אני לא מצליח לעלות על העקרון. מישהו יכול לעזור?
 

uvdude

New member
תיקון קטן

צריך להחזיר פוינטר לאיבר שמתחיל את הsuffix. לא משנה את מהות השאלה.....
 

uvdude

New member
עזבו, הבנתי כבר את הפואנטה

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

vinney

Well-known member
אפשר גם להפוך רשימות

ולרוץ עד ההבדל הראשון, זה גם בסיבוכיות הנדרשת
 
למעלה