Skip to content

Instantly share code, notes, and snippets.

@DaniloOliveira28
Created June 23, 2016 00:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DaniloOliveira28/6662371fe63665bd712c2363f1c0582a to your computer and use it in GitHub Desktop.
Save DaniloOliveira28/6662371fe63665bd712c2363f1c0582a to your computer and use it in GitHub Desktop.
def find_peak(elements):
if len(elements) < 0:
return None
if len(elements) == 1:
return elements[0]
if len(elements) == 2:
if elements[0] > elements[1]:
return elements[0]
else:
return elements[1]
mid = len(elements) / 2
if elements[mid] > elements[mid - 1] and\
elements[mid] > elements[mid + 1]:
return elements[mid]
elif elements[mid] > elements[mid - 1] and\
elements[mid] < elements[mid + 1]:
return find_peak(elements[mid:])
elif elements[mid] < elements[mid - 1] and\
elements[mid] > elements[mid + 1]:
return find_peak(elements[:mid])
if __name__ == '__main__':
X = [1, 3, 50, 51, 10, 9, 7, 6]
print find_peak(X)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment