最近在上MIT的6.006学习算法,第一个视频的内容是peak finding,教授大概讲了两个部分peak finding in 1D array and peak finding in 2D array。一维数列比较好理解,但是二维数列有点难,但是这两个大概的思路都是用binary search,“分成一半一半”这样的思路。
Leetcode Question 162. Find Peak Element:
A peak element is an element that is strictly greater than its neighbors.
Given an integer array
nums
, find a peak element, and return its index. If the array contains multiple peaks, return the index to any of the peaks.You may imagine that
nums[-1] = nums[n] = -∞
.You must write an algorithm that runs in
O(log n)
time.
def PeakFinding(arr):
left = 0
right = len(arr)-1
mid = left + (right-left) / 2
while l