本文共 728 字,大约阅读时间需要 2 分钟。
找出峰值,最直观的的办法是直接遍历数组直到找到峰值,时间复杂度为O(n),代码:if(n == 1) return 0; if(nums[0] > nums[1]) return 0; if(nums[n-1] > nums[n-2]) return n-1; for(int i = 1; i < n-1; i ++) if(nums[i] > nums[i-1] && nums[i] > nums[i+1]) return i;二分查找,时间复杂度O(nlogn):
class Solution(object): return self.findPeakEleByBinarySearch(nums, 0, len(nums) - 1) def findPeakEleByBinarySearch(self, nums, start, end): if start == end: return start mid = int((end - start) /2) + start if nums[mid] > nums[mid + 1]: return self.findPeakEleByBinarySearch(nums, start, mid) else: return self.findPeakEleByBinarySearch(nums, mid + 1, end)
转载地址:http://embvb.baihongyu.com/