我完全不了解Python,因此提出问题。我正在尝试解决一个标准面试题,即在数组中查找峰值。峰值定义为一个数,它比左右相邻的数都大。我正在尝试找到最大的这样的峰值。
这是我的代码:
def main():
arr = [7, 12, 13, 8, 2, 16, 24, 11, 5, 1]
print(find_peak(arr))
def find_peak(arr):
return _find_peak(arr, 0, len(arr))
def _find_peak(arr, start, stop):
mid = (start + stop) // 2
if arr[mid] > arr[mid - 1] and arr[mid] > arr[mid + 1]:
return arr[mid]
elif arr[mid] < arr[mid - 1]:
_find_peak(arr, 0, mid - 1)
elif arr[mid] < arr[mid + 1]:
_find_peak(arr, mid + 1, stop)
if __name__ == '__main__':
main()
这个程序的输出是
None
,而期望的输出是24
。需要帮助。
elif
语句块中,您应该使用return _find_peak...
。但仍然可能会得到不良结果(至少不是None
):) - Maroun