75. Find Peak Element

題目

https://www.lintcode.com/problem/find-peak-element/description?_from=ladder&&fromId=2

實現

  1. 可以使用二分法進行查找
  2. 算出 mid 後,比較 A[mid] 和 A[mid + 1],如果是遞增,那麼 left = mid,否則 right = mid
  3. 最後再去看 A[left]A[right] 誰大,返回對應下標

代碼

class Solution:
    """
    @param A: An integers array.
    @return: return any of peek positions.
    """
    def findPeak(self, A):
        left, right = 0, len(A) - 1
        while left + 1 < right:
            mid = left + (right - left) // 2

            if A[mid] < A[mid + 1]:
                left = mid
            else:
                right = mid

        if A[right] > A[left]:
            return right
        else:
            return left

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章