3.Find Peak Element
Corner Cases:
Solution : (Binary Search)
class Solution
{
public:
int findPeakElement(vector<int> &nums)
{
if (nums.size() == 1)
{
return 0;
}
int start = 0;
int end = nums.size() - 1;
int res = -1;
while (start <= end)
{
int mid = (start + end) / 2;
if (mid > 0 && mid < nums.size() - 1)
{
if (nums[mid] > nums[mid + 1] && nums[mid] > nums[mid - 1])
{
res = mid;
break;
}
else if (nums[mid] < nums[mid + 1])
{
start = mid + 1;
}
else
{
end = mid - 1;
}
}
else if (mid == 0)
{
if (nums[mid] > nums[mid + 1])
{
res = mid;
break;
}
else
{
start = mid + 1;
}
}
else if (mid == nums.size() - 1)
{
if (nums[mid] > nums[mid - 1])
{
res = mid;
break;
}
else
{
end = mid - 1;
}
}
}
return res;
}
};Last updated