כתוב מימוש שיאפשר את המצב הבא
10 threads נכנסים לפונקציה get , הקריאה ל ConfigFactory לוקחת מספר לא מבוטל של שניות, במהלך כל זה thread אחר קורא ל promoteVersion .
דרישה ראשונה: לקרוא ל ConfigFactory כמה שפחות
דרישה שנייה: אפילו שקידמו את הגרסא, כל הטריידים המבקשים את הגירסא הנוכחית צריכים לקבל אותה ולא את הגרסא החדשה שקודמה
public interface VersionCache {
/** return cached instance model */
Config get();
נתון מערך של מספרים שצריך לעמוד בתנאי הבא: בכל תא באינדקס זוגי, צריך להיות מספר זוגי, ואותו הדבר לאי זוגי. עליך לבדוק כמה החלפות צריך לבצע במערך על מנת שהוא יעמוד בתנאי. אם לא ניתן, להחזיר 1-
מערכת שמקבלת קלט של מספרים, סדר חשוב. צריך להוציא טווח מספרים ממקום x עד מקום y.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2020
התשובה היא שימוש ברשימה מקושרת, כאשר ההכנסה מתבצעת באמצעות מצביע לזנב בכדי לשמור על הסדר ועל סיבוכיות O(1) בהכנסה.
בנוסף בכדי לשפר את ביצועי הסרת טווח המספרים ניתן להשתמש ברשימה מקושרת נוספת ששומרת על מצביעים בקפיצות מסוימות (לא חשוב לציין בדיוק באיזה קפיצות שכן זו בעיית אופטימיזצייה בפני עצמה).
זה בפועל יכול לשפר את הביצועים, אך מבחינת סיבוכיות היא נשארת אותו דבר O(n) להסרה כי יחס הקפיצות גם ממצביע למצביע ברשימת המציעים גדל כתלות באורך הקלט.