Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Find Peak Element Using Binary Search in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a peak element in an array?
A peak element is an element that is greater than its neighbors. For the first or last element, only one neighbor is considered.
Click to reveal answer
intermediate
Why use binary search to find a peak element?
Binary search helps find a peak element in O(log n) time by checking the middle element and deciding which half to search next based on neighbors.
Click to reveal answer
intermediate
In the binary search for a peak element, if the middle element is less than its right neighbor, which side do we search next?
We search the right half because a peak must exist there due to the increasing slope.
Click to reveal answer
beginner
What is the time complexity of finding a peak element using binary search?
The time complexity is O(log n) because the search space is halved in each step.
Click to reveal answer
beginner
Show the base condition to stop the binary search when finding a peak element.
When the search space reduces to one element, that element is a peak and the search stops.
Click to reveal answer
What defines a peak element in an array?
AAn element smaller than its neighbors
BAn element greater than its neighbors
CThe first element only
DThe last element only
If mid element is less than its right neighbor, where should binary search continue?
ARight half
BBoth halves
CLeft half
DStop search
What is the time complexity of binary search for peak element?
AO(log n)
BO(n)
CO(n log n)
DO(1)
What happens if the middle element is greater than both neighbors?
ASearch left half
BContinue searching both halves
CSearch right half
DIt is a peak element
Which of these arrays definitely has a peak element?
A[1, 2, 3, 4, 5]
B[5, 4, 3, 2, 1]
CAll of the above
D[1, 3, 2, 4, 1]
Explain how binary search helps find a peak element in an array.
Think about how the array slope guides the search direction.
You got /4 concepts.
    Describe the conditions that determine if the middle element is a peak or which side to search next.
    Focus on comparisons with neighbors.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is a peak element in an array when using binary search to find it?
      easy
      A. An element that is greater than its neighbors
      B. The smallest element in the array
      C. The first element of the array
      D. An element equal to its neighbors

      Solution

      1. Step 1: Understand the definition of a peak element

        A peak element is one that is strictly greater than its neighbors on both sides (or one side if at the boundary).
      2. Step 2: Compare options with the definition

        Only An element that is greater than its neighbors matches this definition exactly.
      3. Final Answer:

        An element that is greater than its neighbors -> Option A
      4. Quick Check:

        Peak element = greater than neighbors [OK]
      Hint: Peak element is bigger than neighbors, not smallest or equal [OK]
      Common Mistakes:
      • Thinking peak means smallest element
      • Confusing peak with first or last element
      • Assuming peak equals neighbors
      2. Which of the following is the correct way to calculate the middle index mid in binary search in JavaScript?
      easy
      A. const mid = (left + right) / 2;
      B. const mid = Math.ceil((left + right) / 2);
      C. const mid = Math.floor((left + right) / 2);
      D. const mid = left + right / 2;

      Solution

      1. Step 1: Understand integer division in JavaScript

        JavaScript division returns a float, so we use Math.floor to get an integer index.
      2. Step 2: Check each option

        const mid = Math.floor((left + right) / 2); uses Math.floor on the average of left and right, which is correct for binary search.
      3. Final Answer:

        const mid = Math.floor((left + right) / 2); -> Option C
      4. Quick Check:

        Use Math.floor for integer mid index [OK]
      Hint: Use Math.floor((left + right) / 2) for mid index [OK]
      Common Mistakes:
      • Not using Math.floor causes float index
      • Using only division without parentheses
      • Incorrect operator precedence in calculation
      3. What will be the output of the following code snippet?
      function findPeak(nums) {
        let left = 0, right = nums.length - 1;
        while (left < right) {
          const mid = Math.floor((left + right) / 2);
          if (nums[mid] > nums[mid + 1]) {
            right = mid;
          } else {
            left = mid + 1;
          }
        }
        return left;
      }
      
      console.log(findPeak([1, 3, 2, 4, 1]));
      medium
      A. 3
      B. 1
      C. 2
      D. 0

      Solution

      1. Step 1: Trace the binary search steps on array [1,3,2,4,1]

        Initial left=0, right=4. mid=2 (value=2). Compare nums[2]=2 and nums[3]=4. Since 2 < 4, left=mid+1=3.
      2. Step 2: Next iteration with left=3, right=4

        mid=3 (value=4). Compare nums[3]=4 and nums[4]=1. Since 4 > 1, right=mid=3.
      3. Step 3: Loop ends as left=right=3

        Return left=3, which is index of peak element 4.
      4. Final Answer:

        3 -> Option A
      5. Quick Check:

        Peak index = 3 [OK]
      Hint: Compare mid and mid+1 to decide left or right [OK]
      Common Mistakes:
      • Returning value instead of index
      • Not updating left or right correctly
      • Confusing mid calculation
      4. Identify the bug in this binary search code to find a peak element:
      function findPeak(nums) {
        let left = 0, right = nums.length - 1;
        while (left <= right) {
          const mid = Math.floor((left + right) / 2);
          if (nums[mid] < nums[mid + 1]) {
            left = mid + 1;
          } else {
            right = mid - 1;
          }
        }
        return left;
      }
      medium
      A. The comparison should be nums[mid] > nums[mid + 1] instead of <.
      B. The mid calculation is incorrect.
      C. The return statement should return right instead of left.
      D. The loop condition should be left < right instead of <=.

      Solution

      1. Step 1: Analyze the loop condition

        The loop uses left <= right, which can cause mid+1 to go out of bounds when mid = right.
      2. Step 2: Correct loop condition for safe mid+1 access

        Changing to left < right ensures mid+1 is always valid inside the loop.
      3. Final Answer:

        The loop condition should be left < right instead of <=. -> Option D
      4. Quick Check:

        Loop condition left < right avoids out-of-bounds [OK]
      Hint: Use left < right to avoid mid+1 overflow [OK]
      Common Mistakes:
      • Using <= causes index out of range error
      • Changing mid calculation unnecessarily
      • Returning wrong index
      5. Given a strictly increasing then strictly decreasing array nums, how can you modify the binary search to find the peak element efficiently?
      Choose the best approach.
      hard
      A. Use binary search comparing nums[mid] and nums[mid-1], move left or right accordingly.
      B. Use binary search comparing nums[mid] and nums[mid+1], move left or right accordingly.
      C. Scan the array linearly from start to find the maximum element.
      D. Sort the array first, then pick the middle element.

      Solution

      1. Step 1: Understand the array shape

        The array increases then decreases, so the peak is the maximum element where nums[mid] > nums[mid+1].
      2. Step 2: Use binary search comparing nums[mid] and nums[mid+1]

        If nums[mid] > nums[mid+1], move right pointer to mid; else move left pointer to mid+1.
      3. Step 3: Avoid linear scan or sorting

        Linear scan is O(n), sorting changes order and is unnecessary.
      4. Final Answer:

        Use binary search comparing nums[mid] and nums[mid+1], move left or right accordingly. -> Option B
      5. Quick Check:

        Compare mid and mid+1 for peak in bitonic array [OK]
      Hint: Compare mid and mid+1 to find peak in bitonic array [OK]
      Common Mistakes:
      • Using linear scan instead of binary search
      • Sorting array destroys peak property
      • Comparing mid and mid-1 incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard