题目描述:
题解一:
题目规定对于所有有效的 i
都有 nums[i] != nums[i + 1],即所有相邻的元素都不会相等,因此nums数组中的最大值必然为峰值,返回最大值的下标。
class Solution(object): def findPeakElement(self, nums): nums2 = sorted(nums) return nums.index(nums2[-1])
题解二:二分法
一个有极大值点的函数图像如下,如果nums[i]<nums[i+1],说明当前处在函数左半段,极大值点在i右边,如果nums[i]>nums[i+1],说明当前位置在函数右半段,极大值点在i左边。
class Solution(object): def findPeakElement(self, nums): left = 0 right = len(nums)-1 while left<right: mid = left + (right - left) // 2 if nums[mid]>nums[mid+1] and nums[mid]>nums[mid-1]: return mid elif nums[mid]<nums[mid+1]: left = mid+1 else: right = mid-1 return left
版权声明:本文为laurasam原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。