המשימה
ממשו את הפעולה removeDuplicates שמקבלת תור של מספרים שלמים ומסירה ממנו
את הערכים הכפולים. מכל ערך יישאר **המופע הראשון** שלו, במקומו המקורי.
דוגמה:
[3, 7, 3, 1, 7, 3] → [3, 7, 1]
הנחיות:
• הפעולה משנה את התור שהתקבל.
• מותר להשתמש בתורים נוספים, ורק בהם.
• פרקו לתת-בעיות. שתי פעולות עזר שיסייעו:
- contains(q, x) — האם x קיים בתור, בלי לפגוע בו.
- copyQueue(q) — מחזירה העתק, בלי לפגוע במקורי.
• רשמו בהערה מהי יעילות הפעולה כפונקציה של מספר האיברים בתור המקורי.
ממשק מבני הנתונים כבר מצורף למשימה.
```ds:queue
{"title":"לפני","items":["3","7","3","1","7","3"]}
```
```ds:queue
{"title":"אחרי — כל ערך נשאר במקום הופעתו הראשונה","items":["3","7","1"]}
```
קוד הפתיחה
public class Main {
/** האם x קיים בתור. התור אינו משתנה. */
public static boolean contains(Queue<Integer> q, int x) {
// כתוב את הפתרון כאן
return false;
}
/** מחזירה העתק של q. התור המקורי אינו משתנה. */
public static Queue<Integer> copyQueue(Queue<Integer> q) {
// כתוב את הפתרון כאן
return new Queue<Integer>();
}
// יעילות: ______ (השלם בהערה)
public static void removeDuplicates(Queue<Integer> q) {
// כתוב את הפתרון כאן
}
public static void main(String[] args) {
Queue<Integer> q = new Queue<Integer>();
int[] data = {3, 7, 3, 1, 7, 3};
for (int v : data) q.insert(v);
System.out.println(q); // [3,7,3,1,7,3]
removeDuplicates(q);
System.out.println(q); // [3,7,1]
Queue<Integer> b = new Queue<Integer>();
b.insert(5); b.insert(5); b.insert(5);
removeDuplicates(b);
System.out.println(b); // [5]
Queue<Integer> empty = new Queue<Integer>();
removeDuplicates(empty);
System.out.println(empty); // []
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.