2 תשובות
אפשר לעשות זאת ב2 דרכים, כלומר עולים לי כרגע שני אלגוריתמים. אלגוריתם אחד הוא ברקורסיה, פעם אחת להוסיף איבר ופעם אחרת לא להוסיף איבר אם בקריאה הקודמת גם לא הוספנו איבר. נעצור כשהסדרה לא תהיה עולה ממש. נזכור את אורך אותה הסדרה והאינדקס ממנה התחלנו, ובחזרה אחורה נחזיר את הרלוונטיות בלבד.
אלגוריתם שני, פשוט יותר וכנראה זה מה שמצופה מכם, יהיה לעבור בלולאה על הרשימה, ולהמשיך למנות את אורך הסדרה עד שהסדרה כבר לא עולה ממש/הגענו לסוף. כאשר הגענו למצב בו הרשימה לא עולה ממש, ישר נקפוץ לאותו אינדקס ונתחיל משם למנות את הסדרה. כמובן שאת האינדקס המקסימלי והאורך המקסימלי נשמור במשתנים כלשהם. לסיום נחזיר את המקסימליים. הסיבוכיות במקרה הגרוע ביותר תהיה o(n) ואני חושב שאין אלגוריתם יעיל יותר.
אלגוריתם שני, פשוט יותר וכנראה זה מה שמצופה מכם, יהיה לעבור בלולאה על הרשימה, ולהמשיך למנות את אורך הסדרה עד שהסדרה כבר לא עולה ממש/הגענו לסוף. כאשר הגענו למצב בו הרשימה לא עולה ממש, ישר נקפוץ לאותו אינדקס ונתחיל משם למנות את הסדרה. כמובן שאת האינדקס המקסימלי והאורך המקסימלי נשמור במשתנים כלשהם. לסיום נחזיר את המקסימליים. הסיבוכיות במקרה הגרוע ביותר תהיה o(n) ואני חושב שאין אלגוריתם יעיל יותר.
שואל השאלה:
תודה
תודה