כתיבת קוד — שיעור 9
אלגוריתמיקה ומבני נתונים
כל 3 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי200 נק'~15 דק'algorithmic
זוג שמסתכם ליעד
נתונה רשימת מספרים שלמים ומספר יעד. החזר True אם קיימים שני איברים *שונים במיקומם* שסכומם שווה ליעד, אחרת False. (זו דוגמת-הזהב A — משמשת כמשימת החימום של שיעור האלגוריתמיקה.)
דוגמאות
has_pair_sum([1,2,3], 5) → True
has_pair_sum([1,2,3], 7) → False
has_pair_sum([3,3], 6) → True
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~20 דק'algorithmic
קבוצת החזקה (Subsets)
נתונה רשימת מספרים ייחודיים nums. החזר את כל תת-הקבוצות שלה (קבוצת החזקה) לפי הסדר הקנוני: מתחילים מהקבוצה הריקה, ובכל צעד מוסיפים את האיבר הבא לכל תת-הקבוצות שנצברו עד כה. לדוגמה [1,2] → [[], [1], [2], [1,2]].
דוגמאות
subsets([]) → [[]]
subsets([1]) → [[], [1]]
subsets([1,2]) → [[], [1], [2], [1,2]]
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני400 נק'~25 דק'algorithmic
ספירת מופעים במערך ממוין (Binary Search)
נתון מערך ממוין (לא יורד) arr ורשימת שאילתות queries. עבור כל שאילתה q החזר כמה פעמים q מופיע ב-arr, כרשימת תשובות באותו סדר. חובה O(log n) לשאילתה (חיפוש בינארי לגבול שמאלי וימני): קלט של מיליון איברים ועשרות אלפי שאילתות חייב לרוץ בזמן. סריקה לינארית לכל שאילתה (O(n·q)) תיפסל ב-timeout.
דוגמאות
count_occurrences([1,2,2,2,3], [2]) → [3]
count_occurrences([1,2,2,2,3], [4]) → [0]
count_occurrences([1,1,1], [1,2]) → [3, 0]
הפתרון נשמר מקומית אוטומטית.