פורסם 2014 בפברואר 211 שנים יש לי שאלה ביעילות על רשימה מקושרת, פתרתי אותה אבל הייתי שמח לפידבק האם הפיתרון שלי נכוןנתונות המחלקות הבאות:public class IntNode {private int _value;private IntNode _next;public IntNode(int val, IntNode n) {_value = val;_next = n;}public int getValue() {return _value;}public IntNode getNext() {return _next;}public void setValue(int v) {_value = v;}public void setNext(IntNode node) {_next = node;}}public class TwoIntLists {private IntNode _listA, _listB;public TwoIntLists (IntNode first, IntNode second) {_listA = first;_listB = second;}}public class IntList {private IntNode _head;public IntList( ) {_head = null;}public IntList (IntNode node) {_head = node;}. . . // methods}עליכם להוסיף שיטה בשם split למחלקה IntListהשיטה מחלקת את איברי הרשימה עליה היא פועלת לשתי רשימות B - ו A, כל אחת באורך n/2כך שההפרש בין סכום אברי A לסכום אברי B יהיה מקסימאלי. השיטה צריכה להחזיר אובייקט מהמחלקה TwoIntLists המכיל בשדותיו את ראשי הרשימות של A ושל B.השיטה שתכתבו צריכה להיות יעילה ככל הניתן.כתבו מה סיבוכיות הזמן וסיבוכיות המקום של השיטה שכתבתם.מה שחשבתי לעשות זה למיין את הרשימה ע"י merge sort - עולה nlognלמצוא את אורך הרשימה - עולה nלחתוך את הרשימה ל-2 ואם יש עודף הוא יהיה בקבוצה A.בסה"כ סיבוכיות זמן של nlogn וסיבוכיות מקום של 1
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.