From 17d41ce1e0d953c854a789f182bbc9bfc8805465 Mon Sep 17 00:00:00 2001 From: ASPP Student Date: Tue, 23 Sep 2025 16:41:31 +0300 Subject: [PATCH] fix the code to pass the first three tests --- hands_on/local_maxima_part2/local_maxima.py | 23 ++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/hands_on/local_maxima_part2/local_maxima.py b/hands_on/local_maxima_part2/local_maxima.py index db89ba3..b2af2b8 100644 --- a/hands_on/local_maxima_part2/local_maxima.py +++ b/hands_on/local_maxima_part2/local_maxima.py @@ -7,4 +7,25 @@ def find_maxima(x): Output: idx -- list of indices of the local maxima in x """ - return [] + idx = [] + # catch the case when input is an empty list + if x == []: + return idx + + # catch the case where a maximum is at the edge + if len(x) > 1: + if x[0] > x[1]: + idx.append(0) + if x[-1] > x[-2]: + idx.append(len(x)-1) + + # if we only have two values, we are done + if len(x) == 2: + return idx + + # other wise for everything not on the edge: + for i in range(1, len(x)-1): + if (x[i] > x[i-1]) & (x[i] > x[i+1]): + idx.append(i) + + return sorted(idx)