מציאת אינדקס חסר בסדרה חשבונית

נתון מערך חד-ממדי a המלא במספרים שלמים באורך לפחות 3 המכיל רצף של איברים עוקבים בסדרה חשבונית. מהסדרה החשבונית נמחקה תת-סדרה, כלומר מספר איברים רצופים. לפחות איבר אחד אולי יותר.

הגדרה: סדרה חשבונית היא סדרה של מספרים, שבה ההפרש בין כל שני איברים עוקבים הוא קבוע: an+1 - an = d כאשר an האיבר ה-n בסדרה.

יש להחזיר את האינדקס במערך בו היה אמור להופיע האיבר הראשון בתת-סדרה החסרה. אם לא חסר אף איבר בסדרה, יוחזר הערך של המקום שאחרי סוף המערך (כלומר אורך המערך a.length).

השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.

אילוצים:

המערך אינו null ואינו ריק. הוא מכיל לפחות 3 איברים, והוא מכיל סדרה חשבונית. ואין שתי תת-סדרות שחסרות אלא מקסימום אחת.

דוגמה 1:
קלט:
a = [22, 24, 26, 32, 34, 36, 38, 40]
פלט:
3

הסבר: המספר 28 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 3.

דוגמה 2:
קלט:
a = [22, 26, 28]
פלט:
1

הסבר: המספר 24 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 1.

דוגמה 3:
קלט:
a = [2, 4, 6, 8, 10]
פלט:
5

הסבר: לא חסרה כאן תת-סדרה ולכן האינדקס שאחרי סוף המערך הוא 5.

דוגמה 4:
קלט:
a = [1, 3, 7, 9, 11]
פלט:
2

הסבר: המספר 5 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 2.

דוגמה 5:
קלט:
a = [10, 20, 30, 50, 60]
פלט:
3

הסבר: המספר 40 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 3.

דוגמה 6:
קלט:
a = [5, 10, 15, 25, 30]
פלט:
3

הסבר: המספר 20 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 3.

דוגמה 7:
קלט:
a = [-1, -2, -3, -5, -6]
פלט:
3

הסבר: המספר -4 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 3.

דוגמה 8:
קלט:
a = [3, 6, 9, 12, 18, 21]
פלט:
4

הסבר: המספר 15 חסר בסדרה החשבונית ולכן האינדקס שבו הוא היה אמור להופיע הוא 4.

Loading...
נשמרLn 1, Col 1

קלט:

a = [22, 24, 26, 32, 34, 36, 38, 40]

הפלט המבוקש:

3