Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Binary Search as Divide and Conquer in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind the divide and conquer approach in binary search?
Divide the problem into smaller parts by splitting the array into halves, then solve the smaller part where the target might be, repeating until found or empty.
Click to reveal answer
beginner
In binary search, what condition tells you to search the left half of the array?
If the target value is less than the middle element, search the left half because the array is sorted.
Click to reveal answer
beginner
Why does binary search require the array to be sorted?
Because it decides which half to search based on comparisons, sorting ensures the target is only in one half, making the search efficient.
Click to reveal answer
intermediate
What is the time complexity of binary search and why?
O(log n) because each step cuts the search space in half, quickly reducing the number of elements to check.
Click to reveal answer
intermediate
Show the recursive step in binary search as divide and conquer.
Check middle element; if target equals middle, return index; else recursively search left or right half depending on comparison.
Click to reveal answer
What does binary search do at each step?
ASplits the array into two halves and searches one half
BChecks every element one by one
CSorts the array first
DSearches both halves simultaneously
Which condition means you should search the right half in binary search?
ATarget is less than middle element
BTarget is equal to middle element
CTarget is greater than middle element
DArray is unsorted
What is the base case for the recursive binary search?
AWhen the target is greater than all elements
BWhen the array is sorted
CWhen the array size is odd
DWhen the array is empty or target is found
Why is binary search faster than linear search on sorted arrays?
ABecause it checks elements randomly
BBecause it halves the search space each step
CBecause it sorts the array first
DBecause it uses more memory
What must be true about the array for binary search to work correctly?
AIt must be sorted
BIt must have unique elements
CIt must be unsorted
DIt must be empty
Explain how binary search uses divide and conquer to find a target in a sorted array.
Think about cutting the problem size in half each time.
You got /4 concepts.
    Describe the base case and recursive step in a recursive binary search function.
    Focus on when the function stops and how it calls itself.
    You got /2 concepts.

      Practice

      (1/5)
      1. What is the main idea behind Binary Search as a divide and conquer algorithm?
      easy
      A. Check every element one by one until the target is found
      B. Use a hash table to find the target instantly
      C. Sort the list first and then search linearly
      D. Repeatedly split the sorted list into halves to find the target

      Solution

      1. Step 1: Understand binary search principle

        Binary search works by dividing the sorted list into two halves and deciding which half to continue searching in.
      2. Step 2: Compare target with middle element

        By comparing the target with the middle element, we eliminate half the list each time, making search efficient.
      3. Final Answer:

        Repeatedly split the sorted list into halves to find the target -> Option D
      4. Quick Check:

        Divide and conquer = split list halves [OK]
      Hint: Divide sorted list in halves to find target fast [OK]
      Common Mistakes:
      • Thinking binary search works on unsorted lists
      • Searching linearly instead of dividing
      • Ignoring the middle element comparison
      2. Which of the following is the correct TypeScript function signature for a binary search function?
      easy
      A. function binarySearch(arr: number[], target: number): number
      B. function binarySearch(arr: number, target: number[]): number
      C. function binarySearch(arr: string[], target: string): void
      D. function binarySearch(arr: number[], target: number): void

      Solution

      1. Step 1: Identify input and output types

        Binary search takes an array of numbers and a target number, returning the index (number) or -1 if not found.
      2. Step 2: Match function signature

        function binarySearch(arr: number[], target: number): number matches input types (number array and number) and returns a number index, which is correct.
      3. Final Answer:

        function binarySearch(arr: number[], target: number): number -> Option A
      4. Quick Check:

        Input: number[], number; Output: number [OK]
      Hint: Input array and target number, output index number [OK]
      Common Mistakes:
      • Swapping array and target types
      • Returning void instead of index
      • Using wrong array element types
      3. What will be the output of the following TypeScript code?
      function binarySearch(arr: number[], target: number): number {
        let left = 0;
        let right = arr.length - 1;
        while (left <= right) {
          const mid = Math.floor((left + right) / 2);
          if (arr[mid] === target) return mid;
          else if (arr[mid] < target) left = mid + 1;
          else right = mid - 1;
        }
        return -1;
      }
      
      const nums = [2, 4, 6, 8, 10];
      console.log(binarySearch(nums, 6));
      medium
      A. 2
      B. 3
      C. -1
      D. 1

      Solution

      1. Step 1: Identify array and target

        Array is [2,4,6,8,10], target is 6.
      2. Step 2: Trace binary search steps

        Middle index initially is 2 (value 6), which matches target, so function returns 2 immediately.
      3. Final Answer:

        2 -> Option A
      4. Quick Check:

        Index of 6 in array = 2 [OK]
      Hint: Find middle index and compare target [OK]
      Common Mistakes:
      • Confusing index with value
      • Off-by-one errors in mid calculation
      • Returning wrong index when target found
      4. Identify the bug in this binary search implementation and choose the fix:
      function binarySearch(arr: number[], target: number): number {
        let left = 0;
        let right = arr.length;
        while (left <= right) {
          const mid = Math.floor((left + right) / 2);
          if (arr[mid] === target) return mid;
          else if (arr[mid] < target) left = mid + 1;
          else right = mid - 1;
        }
        return -1;
      }
      medium
      A. Change mid calculation to (left + right + 1) / 2
      B. Change while condition to left < right
      C. Change right initialization to arr.length - 1
      D. Remove else if and use only if statements

      Solution

      1. Step 1: Check right boundary initialization

        Right should be last valid index, which is arr.length - 1, not arr.length (out of bounds).
      2. Step 2: Understand impact on loop

        Using arr.length causes mid to sometimes be out of array range, causing runtime errors.
      3. Final Answer:

        Change right initialization to arr.length - 1 -> Option C
      4. Quick Check:

        Right boundary = last index [OK]
      Hint: Right index must be last valid array index [OK]
      Common Mistakes:
      • Setting right to arr.length causes out-of-bounds
      • Changing loop condition incorrectly
      • Miscalculating mid index
      5. You have a sorted array with duplicate values: [1, 2, 2, 2, 3, 4]. How would you modify binary search to find the first occurrence of 2?
      hard
      A. Search the right half after finding 2
      B. After finding 2, continue searching left half to find earlier occurrence
      C. Return the first found index immediately
      D. Use linear search instead of binary search

      Solution

      1. Step 1: Understand duplicates in binary search

        Standard binary search returns any matching index, not necessarily the first occurrence.
      2. Step 2: Modify search to find first occurrence

        After finding target, continue searching left half to check if earlier occurrence exists, updating result accordingly.
      3. Final Answer:

        After finding 2, continue searching left half to find earlier occurrence -> Option B
      4. Quick Check:

        Find first occurrence by searching left side [OK]
      Hint: Keep searching left after match to find first duplicate [OK]
      Common Mistakes:
      • Stopping at first found index
      • Searching right half after match
      • Switching to linear search unnecessarily
      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