חידת LeetCode Solution - Minimum Cost to Equalize Array, פתרון ליטקוד, LeetCode Solution, לפתור שאלות ב LeetCode, מדעי המחשב, תכנות מחשבים, לעבוד בהייטק, ללמוד תכנות מחשבים, להיות מתכנת, ללמוד לתכנת, הכנה לראיון טכני, ראיון עבודה בהייטק, שאלות ליטקוד, פיתוח תוכנה, איך לכתוב קוד? ללמוד לכתוב קוד, חידות היגיון, ללמוד לחשוב, ללמוד לנתח דברים, ללמוד לפרק לגורמים, ללמוד לחלק לחלקים, ללמוד למצוא חוקיות, איך לחלק לחלקים? איך למצוא חוקיות? לנתח תהליכים... לנו את התוצאה, של מה העלות שלנו ליישר את כל הרשימה כלפי מעלה. או שיכולנו גם בשלב 3 - לחשב את העלות של ליישר את המספר הנוכחי כלפי מעלה. ובשלב 4 - לעבור על כל הרשימה ולסכום את כל ... הזה, מייצג את כמות פעולות ההוספה שנצטרך לעשות, כדי להביא את כל המספרים לערך המקסימאלי שלהם. ולתובנה הזאת, שניתן לחשב את הכל בריצה אחת, ניתן להגיע באמצעות ניסוי ידני, שבו פותרים את התרגיל שוב ושוב בצורה ידנית כמה פעמים. ... עלינו לבצע את הפעולות הבאות: (5-2=3) + (5-3=2) + (5-3=2) + (5-3=2) = 9 פעולות אבל מצד האמת, אפשרי לחשב זאת גם כך: (5 5 = 25) דהיינו, המקסימאלי שהיה אם כל הערכים היו זהים לערך הגדול ביותר, שהוא ... כה, לקחנו את השאלה המקורית וחילקנו אותה לחלקים. התחלנו במקרה שהוא יחסית קל, שבו יש לנו רק מחיר1 ועלינו לחשב את מחיר1 בלבד. וראינו שבעצם ניתן לעשות זאת בזמן ריצה שהוא O(N). ועכשיו נמשיך לחלק לחלקים ונעבור לחלק קצת ... פעם בבת אחת. דהיינו, שאנחנו חייבים להגדיל בערך 1, אך ורק שני מספרים שונים בבת אחת. האם היינו יודעים לחשב את כמות הפעמים שניתן לבצע את פעולת ההגדלה הזאת? ואסביר: נשים רגע אחד בצד את תהליך איתור המספר הגדול ... כפולה, שבה בבת אחת מגדילים שני מספרים בערך 1, עד שכל המספרים מגיעים לערך הגבוה ביותר. האם נדע איך לחשב את זה? כי אם לא, אז ממילא לא נוכל לפתור את השאלה הגדולה. אז איך בעצם יודעים כמה פעמים ... המקורית. אז בעצם עד כה, היה לנו תהליך של למצוא את המספר הגדול ביותר. יש לנו גם תהליך של לחשב כמה פעמים נצטרך לבצע הגדלה של כל המספרים בכל פעם מספר אחד, עד למקסימום. יש לנו גם תהליך של לחשב, כמה מקסימום פעמים נוכל לבצע הגדלה כפולה של שני ערכים בבת אחת. ומכאן נובעת רמת הקושי הבאה של השאלה, שהיא, שיש לנו עוד חישוב אפשרי, לחשב, במידה ונבצע X הגדלות כפולות, כמה Y הגדלות בודדות נבצע. דהיינו, אם יש לנו צורך להגדיל את כל המספרים ... כמה פעמים נוכל לבצע הגדלות כפולות, לפני שנהיה חייבים לבצע הגדלות בודדות. ואחרי שנדע את כל זה, עכשיו נוכל לחשב את העלות של כל ההגדלות. עד כאן זה בעצם סיכום ביניים של מה שהבנו עד כה. ועכשיו נעבור לחלק ... את כל המספרים. ואיך ניגשים לפתור את החלק הזה של השאלה? אז לשם כך לכאורה בעצם עלינו לקחת רשימה, לחשב את כל האפשרויות האפשריות להגדיל את הרשימה למקסימום. באמצעות כל השילובים של הגדלה בודדת ושל הגדלה כפולה. ומכאן נוכל ... יעיל מבחינת זמן ריצה. ולכן, אם היינו יודעים מראש, איך הכי יעיל למלא את הרשימה, אז היה יותר קל לחשב את העלות. דהיינו, אם ננתח את כל האפשרויות, נראה שבסופו של דבר, יש רק 3 אפשרויות אפשריות. שהן: מבחינת ... הגדלות כפולות. אז נוכל להסיק, שנעשה 100 הגדלות כפולות (סהכ 200) ונצטרך לבצע עוד 300 הגדלות בודדות. ומכך נוכל לחשב את העלות המינימלית, בהכפלה של מחיר1 + מחיר2 בהתאם. במילים אחרות, כרגע ניתן להבין שבעצם כדי לפצח את השאלה ... אז נצטרך: 1 - לאתר את המספר הגדול ביותר. 2 - את המספר הקטן ביותר. 3 - אחכ נצטרך לחשב את הכמות של כל שאר ההגדלות שעלינו לבצע, שאינן מעמודה אחת בלבד של MIN אל MAX. 4 - ואז נוכל לדעת בקלות כמה סהכ הגדלות נוכל לבצע מכל סוג כנל. אחדד ש: עלינו תמיד לחשב רק עמודה אחת בלבד, של MIN אל MAX, ואם יש כמה עמודות של MIN שצריכים להגדיל אותן ל MAX, ...