נתון עץ בינארי:
צור פונקציה ההופכת את כל הענפים והמצתות (כמו מראה)
public void ReverseTree(TreeNode root){
TreeNode tmp = root.leftReference;
root.leftReference = root.rightReference;
root.rightReference = tmp;
if(root.leftReference != null) ReverseTree(root.leftReference);
if(root.rightReference != null) ReverseTree(root.rightReference);
}
נתון שתי רשימות מקושרות וחד כיווניות אשר מתמזגות בנקודה מסויימת
כתוב פונקציה אשר מחזירה את צומת המפגש:
public static void main(String[] args) {
LinkedList<Integer> list1 = new LinkedList<Integer>();
LinkedList<Integer> list2 = new LinkedList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(25);
list1.add(34);
list1.add(43);
list1.add(5);
list2.add(-1);
list2.add(-2);
list2.add(-3);
list2.add(4);
list2.add(62);
list2.add(73);
list2.add(4);
list2.add(67);
Iterator<Integer> iter1 = list1.iterator();
Iterator<Integer> iter2 = list2.iterator();
while(iter1.hasNext() ){
while(iter2.hasNext()){
if(iter1.next() == iter2.next())
System.out.println(true);
}
}
נתון מערך של מספרים שלמים
צור פונקציה שמקבלת מערך ומחזירה את סכום הזוגות הגדול ביותר כאשר לזוגות אסור להיות שכנים .
על זה לא עניתי
אם אפשר תנו תשובה.
נתון קובייה (כמו הונגרית).
תת קובייה פנימית היא כזאת שאין לה שום פאה חיצונית.
צור נוסחה המחשבת כמה תת קוביות פנימיות יש.
(דוגמא: עבור קובייה הונגרית יש 9*3 תת קוביות ורק אחת פנימית) .
וגם על זה לא עניתי
ממש נלחצתי שם.
לפני 5 שנים
ע"י: אנונימי....
אני לא יודעת למה, אבל יש כאן בפורם shaming נורא על אמדוקס.
היייתי שם לפני תקופה שראיון, וקיבלתי יחס מושלם. אין לחץ, גם כשלא בדיוק זרמה לי התשובה ישר.............
היתה ממש חוויה, מאד נהניתי.
חבל מאד שככה מלכלכים על חברה שכמבדת את עצמה ואת המרואיינים שלו- לפחות לפי מה שאני הרגשתי.
לפני 5 שנים
ע"י: 1_אורח_כללי
אני לא יודעת למה, אבל יש כאן בפורם shaming נורא על אמדוקס.
היייתי שם לפני תקופה שראיון, וקיבלתי יחס מושלם. אין לחץ, גם כשלא בדיוק זרמה לי התשובה ישר.............
היתה ממש חוויה, מאד נהניתי.
חבל מאד שככה מלכלכים על חברה שכמבדת את עצמה ואת המרואיינים שלו- לפחות לפי מה שאני הרגשתי.
תוכל לשתף בשאלות?
לפני 8 שנים
ע"י: 1_אורח_כללי
מה שעשית עם הרשימה המקושרת לא נכון
מה ששלומי רשם עם המערך זה לא נכון, דוגמא נגדית: 1 9 10 9 יבחר 11 במקום 18
צריך לפתור את זה עם תכנון דינמי בזמן של n^2
לפני 8 שנים
ע"י: 1_אורח_כללי
מה שעשית עם הרשימה המקושרת לא נכון
מה ששלומי רשם עם המערך זה לא נכון, דוגמא נגדית: 1 9 10 9 יבחר 11 במקום 18
צריך לפתור את זה עם תכנון דינמי בזמן של n^2
די בטוחה שאפשר לעשות את זה בזמן יותר יעיל(אך אם יותר זיכרון), ותקן אותי אם אני טועה:
1. ניצור מבנה נתונים כלשהו אשר שומר את יחס השכנות. אני מימשתי עם מילון בפייתון, אבל אפשר בקלות גם לשמור בתא במערך פשוט מצביעים לאיברים שהיו שכנים.
2. נמיין את המערך הנתון בסדר יורד (המיון קצת תלוי באיך שמרנו את היחס. אם במבנה נתונים נפרד - כל מיון רגיל יעבוד טוב. אם נרצה לשמור גם מצביעים ליחסים המקוריים - נצטרך להגדיר מיון מיוחד המעדכן את המצביעים - אפשרי אבל יותר כאב ראש).
3. כעת יש מספר סופי של בדיקות שעלינו לעשות, היות ולכל איבר יש לכל היותר 2 שכנים יתקיימו אחד מהבאים:
א. האיבר הגדול ביותר והשני הגדול ביותר אינם שכנים במקור, ועל כן נחזיר את סכומם
ב. האיבר הגדול ביותר והשלישי הגדול ביותר אינם שכנים במקור, ועל כן נחזיר את סכומם (כי הראשון והשני שכנים, והשני + השלישי קטן שווה לסכום הראשון והשלישי).
ג. אם שני הקודמים קרו, אזי הראשון והרביעי בהכרח לא שכנים. נשמור את סכומם.
כעת אני יודעים כי השני והראשון שכנים. אזי נתבונן בסכים השני והשלישי, אם הוא גדול מהשמור, נחזיר אותו. אחרת, נחזיר את השמור.
וסיימנו.
זמן הריצה הוא nlogn, המושפע מהמיון
לפני 8 שנים
ע"י: 1_אורח_כללי
מה שעשית עם הרשימה המקושרת לא נכון
מה ששלומי רשם עם המערך זה לא נכון, דוגמא נגדית: 1 9 10 9 יבחר 11 במקום 18
צריך לפתור את זה עם תכנון דינמי בזמן של n^2
די בטוחה שאפשר לעשות את זה בזמן יותר יעיל(אך אם יותר זיכרון), ותקן אותי אם אני טועה:
1. ניצור מבנה נתונים כלשהו אשר שומר את יחס השכנות. אני מימשתי עם מילון בפייתון, אבל אפשר בקלות גם לשמור בתא במערך פשוט מצביעים לאיברים שהיו שכנים.
2. נמיין את המערך הנתון בסדר יורד (המיון קצת תלוי באיך שמרנו את היחס. אם במבנה נתונים נפרד - כל מיון רגיל יעבוד טוב. אם נרצה לשמור גם מצביעים ליחסים המקוריים - נצטרך להגדיר מיון מיוחד המעדכן את המצביעים - אפשרי אבל יותר כאב ראש).
3. כעת יש מספר סופי של בדיקות שעלינו לעשות, היות ולכל איבר יש לכל היותר 2 שכנים יתקיימו אחד מהבאים:
א. האיבר הגדול ביותר והשני הגדול ביותר אינם שכנים במקור, ועל כן נחזיר את סכומם
ב. האיבר הגדול ביותר והשלישי הגדול ביותר אינם שכנים במקור, ועל כן נחזיר את סכומם (כי הראשון והשני שכנים, והשני + השלישי קטן שווה לסכום הראשון והשלישי).
ג. אם שני הקודמים קרו, אזי הראשון והרביעי בהכרח לא שכנים. נשמור את סכומם.
כעת אני יודעים כי השני והראשון שכנים. אזי נתבונן בסכים השני והשלישי, אם הוא גדול מהשמור, נחזיר אותו. אחרת, נחזיר את השמור.
וסיימנו.
זמן הריצה הוא nlogn, המושפע מהמיון
למה לעבוד ככ קשה ? אפשר למצוא במעבר אחד על המערך באמצעות מציאות 3 איברים מקסימלים, ברגע שיש לנו 3 איברים מקסימלים לוקחים את ה2 שהסכום שלהם מקסימלי והם לא צמודים - כלומר בדוגמא שנתתם יבחרו הספרות 10,9,9 מכיוון ש10,9 צמודים יבחרו 9,9 להיות הזוג עם הסכום המקסימלי שאיבריהם לא צמודים.
חשיבה מחוץ לקופסא.
בהצלחה.
לפני 11 שנים
ע"י: לכלוכון
למה לרצות לעבוד באמדוקס לעזאזל? בקושי יש שם פיתוח - רק תיקון באגים, יש להם שם ממש רע בחוץ וסתם טוחנים שם שעות.
לפני 11 שנים
ע"י: 1_אורח_כללי
בנוגע לתשובה הראשונה שלך, העץ בינרי בעצמו יכול להיות NULL, לדעתי שווה גם לבדוק את זה לפני שאתה מתחיל להפוך.
בנוגע לתשובה השנייה, בלולאה הראשית אתה לא מאתחל את המצביע של iter2 להצביע לתחילת הרשימה השנייה כאשר הלולאה המשנית מסיימת להתבצע. זה אומר שלאחר שהלולאה הפנימית תסיים להתבצע בפעם הראשונה - iter2 יצביע על NULL, ובעצם הלולאה הראשית תעבור על כל איברי הרשימה הראשונה ותשווה את המצביע שלהם ל-NULL.
שים לב שמבקשים ממך להדפיס את תחילת הקטע המשותף - הפונקציה שלך מדפיסה אם נמצא מצביע זהה ולא את המצביע עצמו. היא תמיד תדפיס true, כי במקרה הגרוע לשתי הרשימות יש איבר משותף - האיבר NULL עצמו שתמיד מופיע בסוף רשימה.
לגבי השאה השלישית - אם המערך המחזיק איברים שלמים - נראה לי שזה אומר פשוט להדפיס את המספר המקסמלי ולאחר מכן להדפיס את המקסימום מהמספרים שאינם צמודים אליו. אפשר לעשות את זה במעבר אחד (אין לי כוח כרגע לכתוב את הקוד).
לגבי הקובייה ותת הקוביות - נראה לי שהשאלה שקולה לשאלה של כמה תת קוביות יש לקוביה שאין לה חלק חיצוני שזהה לקוביה המקורית. ז"א, אם יש לך קוביה בגודל 5*5*5, השאלה שקולה לכמה תת קוביות יש לקוביה בגודל 3*3*3. במקרה של הדוגמא, יש לך קוביה בגודל 3*3*3, והשאלה היא כמה תת קוביות יש לקוביה בגודל 1*1*1 (1).
עבור קוביה שאורך הצלע שלה k, נקודת ההתחלה של תת קוביה בגודל n יש k-n+1 אפשרויות (בדקתי). ז"א שעבור 3 מימדים נקבל 3^(k-n+1) אפשריות לקוארדינטות הפינה של תת קוביה.
אורך צלע של תת קוביה n יכול להיות מ-1 ועד k.
לכן, לקוביה באורך k יש סיגמא על (k-n+1) של n כאשר n הוא מ-1 ועד k.
k של תת הקוביה צריך להיות קטן ב-2 מאשר הקוביה המקורית כדי שלא יהיה חלק חיצוני משותף.