Leetcode之Find Peak Element

来源:互联网 发布:织梦cms 首页轮播 编辑:程序博客网 时间:2024/04/30 03:39
找出峰值,最直观的的办法是直接遍历数组直到找到峰值,时间复杂度为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)


0 0
原创粉丝点击