-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path6-peak.py
More file actions
executable file
·24 lines (21 loc) · 826 Bytes
/
Copy path6-peak.py
File metadata and controls
executable file
·24 lines (21 loc) · 826 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/python3
"""Finds a peak in a list of unsorted integers"""
def find_peak(list_of_integers):
"""Finds a peak in list_of_integers"""
if list_of_integers is None or list_of_integers == []:
return None
lo = 0
hi = len(list_of_integers)
mid = ((hi - lo) // 2) + lo
mid = int(mid)
if hi == 1:
return list_of_integers[0]
if hi == 2:
return max(list_of_integers)
if list_of_integers[mid] >= list_of_integers[mid - 1] and\
list_of_integers[mid] >= list_of_integers[mid + 1]:
return list_of_integers[mid]
if mid > 0 and list_of_integers[mid] < list_of_integers[mid + 1]:
return find_peak(list_of_integers[mid:])
if mid > 0 and list_of_integers[mid] < list_of_integers[mid - 1]:
return find_peak(list_of_integers[:mid])