162. Find Peak Element

来源:互联网 发布:图形算量软件 编辑:程序博客网 时间:2024/05/16 08:25

因为没有重复数字,减少了计算的复杂的,通过对分的思想,使得时间复杂度为O(long(n)),满足题目要求。

class Solution {public:    int findPeakElement(vector<int>& nums) {        int left=0;        int right=nums.size()-1;        while(right-left>=2)        {            int mid=left+(right-left)/2;            if(nums[mid]<=nums[mid-1]&&nums[mid+1]>=nums[mid])                left++;            else            {                if(nums[mid]>=nums[mid-1]&&nums[mid+1]>=nums[mid])                    left=mid+1;                else if(nums[mid]<=nums[mid-1]&&nums[mid+1]<=nums[mid])                    right=mid-1;                else                    return mid;            }        }        if(left==right)            return left;        else         {            if(nums[right]>nums[left])                return right;            else                return left;        }    }};
0 0
原创粉丝点击