ליטקוד, LeetCode Solution, איך לפתור שאלות ב LeetCode? ראיונות קוד, תרגול ליטקוד, מדעי המחשב, תכנות מחשבים, לעבוד בהייטק, ראיון טכני, שאלות חשיבה, איך לפתור בעיות מורכבות? איך לפתח את המוח? איך להתכונן לראיון עבודה בהייטק? תרגול שאלות ליטקוד כהכנה לראיון, איך להיות מתכנת מחשבים? לעבוד בפיתוח תוכנה, איך למצוא מה בטוח נכון? ללמוד לנתח תהליכים, איך ללמוד לתכנת? איך ללמוד לכתוב קוד? כתיבת קוד, לפתור חידות היגיון, איך להבין חוקיות? איך למצוא חוקיות?... להן יתרון על פני מאמץ שכלי בתחומים אחרים. כי בליטקוד, יש בעיות מוגדרות וספציפיות, עם מערכת שבודקת בדיוק את הפתרון שלך, האם באמת הוא עובד וכמה הוא יעיל וכולי. ואז זה מגדיל את הסיכוי, שאתה לא בטעות תחשוב שאתה ... - האם פתרנו את הבעיה שהוצגה. 2 - האם ומהי היעילות אלגוריתמית, דהיינו: מהי היעילות (סיבוכיות זמן הריצה) של הפתרון שפתרנו את הבעיה. דהיינו, כמה פעולות היינו צריכים לבצע, ביחס לכמות המידע שנתנו לנו לנתח (עע מה זה זמן ... שפתרנו את השאלה? אז לפתור את השאלה, אפשרי באופן חלקי או באופן מלא. וזה כמובן בלי קשר ליעילות של הפתרון. ולפתור שאלה באופן חלקי, זה אומר שהפתרון אכן יפתור מצבים מסויימים של השאלה. אבל פתרון מלא של השאלה, הוא רק כאשר הפתרון שהצענו לפתור את השאלה, יפתור אותה בכל המצבים האפשריים שהאתר LeetCode יבדוק את הפתרון שלנו. כי בצוות של האתר ליטקוד, יש אנשים שלוקחים פתרונות של אנשים ומנסים להקריס את הפתרונות האלו בכל מיני מקרה קצה כאלו ואחרים. ולפתור את השאלה מבחינת ליטקוד, זה רק כאשר הפתרון שלנו עובר את כל מצבי הבדיקה TestCase שהם הגדירו לבדוק את הפתרון שלנו. או במילים אחרות, זאת לא רק חוכמה לדעת לפתור שאלות בליטקוד, אלא זאת גם חוכמה להבין איך לפתור את השאלה בכל מצב אפשרי. וזאת גם חוכמה להבין על כל פתרון, האם ובאילו מצבים הוא לא יפתור את השאלה. דהיינו, להבדיל בין פתרון אפשרי, שרק אפשרי שהוא יעבוד בחלק מהמקרים, לבין פתרון מחויב, שמחויב שהוא יעבוד בכל המקרים. ואחרי שמצאנו פתרון שעובד בכל המקרים האפשריים, עכשיו האתר יבדוק, האם יש דרך יותר יעילה עם פחות פעולות (סיבוכיות זמן ריצה) ופחות ... בקול למראיין, מה כן ברור לך מהשאלה ומה לא ברור לך ומה האפשרויות שאתה רואה להבין את השאלה ומה הפתרונות האפשריים לכל אחד מהפירושים האפשריים שיש לך לשאלה. כי בראיון, מנסים בעיקר להבין איך אתה רגיל לחשוב. כמובן שבאתר ליטקוד זה לא יעבוד, אלא תצטרך להריץ פתרון והאתר יגיד לך אם לדעתו עברת את כל מקרי הבדיקה שלו או לא, בלי קשר לאם הבנת את השאלה ... לפתור שאלת ליטקוד באתר ליטקוד, יש לנו כמה אתגרים לעבור. 1 - להבין את השאלה. 2 - להבין את הפתרון באופן כללי. 3 - לכתוב, להריץ ולבדוק את הפתרון במערכת של האתר ליטקוד. ואני אסביר: הרבה מתכנים חושבים, שהשלב הבא אחרי שמבינים שאלת ליטקוד, זה להתחיל לקודד או להתחיל לחשוב על איזה קוד יודע לבצע את הפתרון שהם רוצים לבצע. והתהליך הזה הוא מורכב מכמה חלקים. חלק 1 - הוא להבין את הלוגיקה של הפתרון שרוצים לכתוב. חלק 2 - הוא לדעת איך לכתוב את הלוגיקה הזאת בשפת התכנות שאנחנו רוצים לכתוב בה את הפתרון. כי הרבה פעמים המגבלה של המתכנת, היא שהוא חושב דרך השפה שהוא מנסה לתכנת בה ולא בצורה מופשטת וכללית יותר. ונכון שבסוף צריך איכשהו לקודד את הפתרון בשפה כלשהי עם מגבלות כלשהן, אבל כאשר מנסים למצוא פתרון לשאלת ליטקוד, צריכים לחשוב באופן מופשט, בלי שום אילוץ של שפה כלשהי. דהיינו, דמיין שיש לך שפת תכנות, שבה ... מאמץ שהוא מתאמץ. האם ואיך היית חוסך את הפעולות שלו ואת המאמץ שלו? זה המפתח להבין איך לייעל את הפתרון. או במילים אחרות, נסה לחשוב על הפתרון, בצורה שאינה תלוית שפה כלשהי. נסה למצוא ילד, תסביר לו את השאלה, ואת הפעולות שהוא צריך לעשות כדי לפתור ... שהוא יעשה בדיוק את מה שתסביר לו, האם הוא יצליח לפתור את הבעיה? ועכשיו נסביר יותר לעומק על תהליכים בפתרון שאלות ליטקוד לחלק לחלקים אז יש כאן כמה עקרונות, העיקרון המרכזי הוא, לדעת לחלק לחלקים כל חלק מהשאלה שמוצגת ... שאתה יודע לזהות צבע לבן או חתול, כנראה שתהיה בבעיה. זה נקרא לחלק לחלקים ואני אנסה לתת דוגמאות בהמשך לפתרון בעיות אמיתיות מ LeetCode. ואחרי שחילקת את השאלה לחלקים, קח כל חלק בפני עצמו ותנסה לפתור אותו בפני עצמו. ... שאנחנו חושבים שיש לנו תשובה לשאלה הזאת, אבל שהתשובה הזאת נכונה במאה אחוז? האם יש לנו מקרה פשוט ביותר, שהפתרון שלו הוא בטוח נכון לדעתינו? חפש את מה שנראה לך בטוח נכון. או את מה שנראה לך ביותר סיכוי להיות בטוח נכון. לאחר מכן לאט לאט, שאר החלקים יפתרו מעצמם. כי מה שלא בטוח נכון, תלוי בגורמים קטנים, שהם לכשעצמם בטוח נכונים. איך לדעת מה בטוח נכון? איך ... Y. דהיינו, במקום לחפש מה בטוח נכון, נחפש מה יותר בטוח. נחפש את נקודת הוודאות היחסית שאנחנו יכולים למצוא. פתרון שעובד בכל מצב כאשר יש לך נוסחה לפתרון כלשהו, שאל את עצמך, האם אתה בטוח במאה אחוז שתמיד בכל קלט שתקבל, תמיד הנוסחה שלך תעבוד? אתה באמת ... למה זה בהכרח יעבוד לא משנה מה? כך, תוכל לאתר מקרי קצה שבהם הקוד שלך לא יעבוד. וככה תתקרב לפתרון הכללי שעובד תמיד. יעילות זמן ריצה / סיבוכיות זמן ריצה וכמובן לפני שאתה מנסה לפתור את השאלה בדרך היעילה ביותר או לפני שאתה מנסה לייעל את פתרון השאלה, קודם כל תנסה לפתור את השאלה בצורה כלשהי, גם אם היא לא יעילה. כי יותר קל לפתור שאלות ... כלשהי, לפני שמנסים לייעל את התהליך. איך לייעל זמן ריצה? בעיקרון יעול זמן הריצה, מתבצע באמצעות שינוי בלוגיקה של הפתרון. ובמהות של ההתייעלות, זה לנסות לעבור על התהליך הלא יעיל כולו מהתחלה עד הסוף ועל כל פעולה, לשאול, האם ... לפצח שלב 6 - נסה לחפש משהו שהוא בטוח נכון / נסה לחפש מצב שאתה חושב שיש לך אליו פתרון כלשהו שהוא בטוח נכון שלב 7 - נסה לפתור את השאלה בדרך כלשהי, גם אם היא לא יעילה שלב 8 - נסה להבין האם הפתרון שלך עובד בכל המקרים שלב 9 - נסה לייעל את התהליך, באמצעות לייתר פעולות מיותרות וכיוב בהצלחה