要求log2n的复杂度首先考虑二分法。
int findPeakElement(vector<int>& nums)
{
if(nums.size() == 1)
return nums[0];
int begin = 0, end = nums.size() - 1;
while(begin < end)
{
if(end - begin == 1)
return nums[begin] > nums[end] ? begin : end;
int mid = (begin + end) / 2;
if(nums[mid] <= nums[begin])
{
end = mid;
continue;
}
if(nums[mid] <= nums[end])
{
begin = mid;
continue;
}
begin ++;
end --;
}
return begin;
}
本文介绍了一个寻找峰值元素的算法实现,采用二分法达到log2n的时间复杂度。该算法适用于数组中查找局部最大值的问题,通过不断缩小搜索范围直至找到峰值。
938

被折叠的 条评论
为什么被折叠?



