# Solving Leetcode Interviews in Seconds with AI: Find Peak Element


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "162" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> A peak element is an element that is strictly greater than its neighbors. Given a 0-indexed integer array nums, find a peak element, and return its index. If the array contains multiple peaks, return the index to any of the peaks. You may imagine that nums[-1] = nums[n] = -∞. In other words, an element is always considered to be strictly greater than a neighbor that is outside the array. You must write an algorithm that runs in O(log n) time.   Example 1:  Input: nums = [1,2,3,1] Output: 2 Explanation: 3 is a peak element and your function should return the index number 2. Example 2:  Input: nums = [1,2,1,3,5,6,4] Output: 5 Explanation: Your function can return either index number 1 where the peak element is 2, or index number 5 where the peak element is 6.   Constraints:  1 <= nums.length <= 1000 -231 <= nums[i] <= 231 - 1 nums[i] != nums[i + 1] for all valid i.  

	# Explanation
	Here's the solution to find a peak element in O(log n) time:

*   **Binary Search:** Use binary search to efficiently narrow down the search space. The key idea is to check the middle element and its neighbor.
*   **Directional Guidance:** If the middle element is smaller than its right neighbor, a peak must exist on the right side. Conversely, if the middle element is smaller than its left neighbor, a peak must exist on the left side.
*   **Peak Identification:** If the middle element is greater than both its neighbors, it's a peak.

*   **Time Complexity:** O(log n), **Space Complexity:** O(1)

	
	# Code
	```python
	def findPeakElement(nums):
    """
    Finds a peak element in a list of numbers using binary search.

    Args:
        nums: A list of integers.

    Returns:
        The index of a peak element.
    """
    left, right = 0, len(nums) - 1

    while left < right:
        mid = left + (right - left) // 2  # To prevent potential overflow

        if nums[mid] < nums[mid + 1]:
            left = mid + 1  # Peak exists on the right side
        else:
            right = mid  # Peak exists on the left side or at mid

    return left  # 'left' will be pointing to the peak element
	```
			
