כמעט פלינדרום הארוך ביותר

פלינדרום (Palindrome) הוא מילה, מספר, משפט או כל רצף סמלים אחר שקריאתו מימין לשמאל ומשמאל לימין היא זהה.

לדוגמה, מחרוזות התווים "aba", "1221" הן פלינדרום. 
בהינתן מערך של מספרים שלמים nums, נגדיר רצף כמעט-פלינדרומי (Almost Palindrome) הוא רצף מספרים כך שאם נשמיט ממנו ערך אחד לכל היותר (בתוך הרצף ולא בקצה) נקבל רצף פלינדרומי.
יש להחזיר את אורכו של הרצף הכמעט-פלינדרומי הגדול ביותר.

השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.

אילוצים:
  • אסור לשנות את המערך אפילו לא באופן זמני!
  • אסור להשתמש במשתנים סטטיים (גלובליים)!
דוגמה 1:
קלט:
arr = [1, 1, 4, 10, 10, 4, 3, 10, 10]
פלט:
6

הסבר: הרצף הכמעט-פלינדרומי הגדול ביותר הוא בין האינדקסים 3 ל-8, ואורכו הוא 6.

דוגמה 2:
קלט:
arr = [1, 2, 3, 4]
פלט:
1

הסבר: השיטה תחזיר 1.

דוגמה 3:
קלט:
arr = [1, 2, 3, 2, 1]
פלט:
5

הסבר: המערך כבר פלינדרום מלא בגודל 5, לכן החזרנו 5.

דוגמה 4:
קלט:
arr = [1, 2, 3, 3, 2, 1]
פלט:
6

הסבר: המערך כבר פלינדרום מלא בגודל 6, לכן החזרנו 6.

דוגמה 5:
קלט:
arr = [1, 2, 3, 4, 2, 1]
פלט:
6

הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את הערך 4 או 3 נקבל פלינדרום בגודל 5, אך המערך המקורי בגודל 6 הוא כמעט-פלינדרום ולכן מחזירים 6.

דוגמה 6:
קלט:
arr = [5, 8, 9, 8, 9, 5]
פלט:
6

הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את אחד הערכים 9 נקבל פלינדרום בגודל 5, אך המערך המקורי בגודל 6 הוא כמעט-פלינדרום ולכן מחזירים 6.

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

הסבר: אין כאן רצף כמעט-פלינדרום ארוך, רק אלמנטים בודדים שהם פלינדרומים טריוויאליים בגודל 1.

דוגמה 8:
קלט:
arr = [10, 10, 15, 20, 15, 10, 10]
פלט:
7

הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את הערך 20 באמצע נקבל פלינדרום בגודל 6, אך המערך המקורי בגודל 7 הוא כמעט-פלינדרום ולכן מחזירים 7.

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

קלט:

arr = [1, 1, 4, 10, 10, 4, 3, 10, 10]

הפלט המבוקש:

6