למישהו יש רעיון ?

SomePerson

New member
למישהו יש רעיון ?

איך למצוא סכום מסוים של שלושה מספרים במערך בזמן (O(n^2
 

vicz

New member
כן

מיון המערך עבור כל איבר: נסמן את האיבר הנוכחי x כעת אנחנו מחפשים שני איברים שסכומם הוא סכום רצוי של שלושה מספרים פחות x. נסמן סכום של שני מספרים שאנחנו מחפשים ע"י sum נרוץ עם שני מצביעים משני מצדי המערך (שהוא מערך ממוין). אם סכום האיברים עליהם מצביעים שני המצביעים גדול מ-sum, נקדם את המצביע הימני שמאלה, ובכך נקטין אותו אם סכום האיברים עליהם מצביעים שני המצביעים קטן מ-sum, נקדם את המצביע השמאלי ימינה ובכך נגדיל אותו אם יש שיוויון אז כמובן מצאנו את מה שחיפשנו. כמובן שיש גם להוסיף שאף אחד מהזוג אינו x, אבל זה כבר עניין טכני. לגבי סיבוכיות: מיון - nlgn ריצה משני צדי המערך: n מתבצעת n פעמים לכל היותר ולכן: n^2 סה"כ אלגוריתם: n^2
 
למעלה