Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Divide and Conquer Strategy and Recurrence Relations in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Divide and Conquer strategy in algorithms?
Divide and Conquer is a method where a problem is split into smaller subproblems, each solved independently, and then combined to get the final solution.
Click to reveal answer
beginner
Explain what a recurrence relation is in the context of Divide and Conquer.
A recurrence relation expresses the total time of an algorithm in terms of the time taken by smaller subproblems plus the time to combine their results.
Click to reveal answer
intermediate
Example: What is the recurrence relation for Merge Sort?
T(n) = 2 * T(n/2) + O(n), where 2 * T(n/2) is the time for sorting two halves and O(n) is the time to merge them.
Click to reveal answer
intermediate
What does the Master Theorem help with?
The Master Theorem provides a quick way to solve recurrence relations of Divide and Conquer algorithms to find their time complexity.
Click to reveal answer
beginner
Why is Divide and Conquer efficient for large problems?
Because it breaks a big problem into smaller parts, solves them independently, often in parallel, and combines results efficiently, reducing overall work.
Click to reveal answer
What is the first step in the Divide and Conquer approach?
AIgnore the problem
BCombine the results
CSolve the problem directly
DDivide the problem into smaller subproblems
Which recurrence relation matches the Quick Sort average case?
AT(n) = 2 * T(n/2) + O(n^2)
BT(n) = 2 * T(n/2) + O(n)
CT(n) = T(n-1) + O(n)
DT(n) = T(n/2) + O(1)
What does the term 'conquer' mean in Divide and Conquer?
ASplitting the problem
BSolving the subproblems
CCombining the results
DIgnoring subproblems
Which of these is NOT a step in Divide and Conquer?
AIterate
BConquer
CDivide
DCombine
What does the Master Theorem require to solve a recurrence?
ANumber of subproblems, size of each subproblem, and cost to combine
BOnly the size of the problem
COnly the number of subproblems
DOnly the cost to combine
Describe the three main steps of the Divide and Conquer strategy with an example.
Think about how a big problem is split, solved, and results joined.
You got /4 concepts.
    Explain how recurrence relations help analyze the time complexity of Divide and Conquer algorithms.
    Focus on expressing time in terms of smaller parts.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main idea behind the Divide and Conquer strategy in algorithms?
      easy
      A. Break the problem into smaller subproblems, solve them independently, then combine results
      B. Solve the problem by trying all possible solutions one by one
      C. Use a single loop to iterate through all elements
      D. Store all intermediate results to avoid repeated calculations

      Solution

      1. Step 1: Understand the divide and conquer approach

        It splits a big problem into smaller parts that are easier to solve.
      2. Step 2: Combine the solutions of smaller parts

        After solving subproblems, their results are merged to get the final answer.
      3. Final Answer:

        Break the problem into smaller subproblems, solve them independently, then combine results -> Option A
      4. Quick Check:

        Divide and conquer = split, solve, combine [OK]
      Hint: Divide big problems into smaller parts, solve, then merge [OK]
      Common Mistakes:
      • Confusing divide and conquer with brute force
      • Thinking it uses only loops without recursion
      • Mixing it up with dynamic programming
      2. Which of the following is the correct recurrence relation for the Merge Sort algorithm?
      easy
      A. T(n) = 3T(n/3) + O(n^2)
      B. T(n) = 2T(n/2) + O(n)
      C. T(n) = T(n/2) + O(1)
      D. T(n) = T(n-1) + O(1)

      Solution

      1. Step 1: Recall Merge Sort process

        Merge Sort splits array into two halves, sorts each half, then merges.
      2. Step 2: Write recurrence relation

        It calls itself twice on half size (2T(n/2)) plus merging cost O(n).
      3. Final Answer:

        T(n) = 2T(n/2) + O(n) -> Option B
      4. Quick Check:

        Merge Sort recurrence = 2T(n/2) + n [OK]
      Hint: Merge sort splits in two, merges in linear time [OK]
      Common Mistakes:
      • Using T(n-1) instead of T(n/2)
      • Confusing merge cost with recursive calls
      • Choosing cubic or quadratic terms incorrectly
      3. What is the output of the following TypeScript function that uses divide and conquer to find the maximum element?
      function findMax(arr: number[], left: number, right: number): number {
        if (left === right) return arr[left];
        const mid = Math.floor((left + right) / 2);
        const maxLeft = findMax(arr, left, mid);
        const maxRight = findMax(arr, mid + 1, right);
        return maxLeft > maxRight ? maxLeft : maxRight;
      }
      
      const array = [3, 5, 1, 8, 2];
      console.log(findMax(array, 0, array.length - 1));
      medium
      A. 3
      B. 5
      C. 8
      D. 2

      Solution

      1. Step 1: Understand the function logic

        The function splits the array into halves recursively and compares max values.
      2. Step 2: Trace the recursive calls on array [3,5,1,8,2]

        Max in left half [3,5,1] is 5; max in right half [8,2] is 8; final max is 8.
      3. Final Answer:

        8 -> Option C
      4. Quick Check:

        Max element found by divide and conquer = 8 [OK]
      Hint: Divide array, find max in halves, pick bigger [OK]
      Common Mistakes:
      • Returning min instead of max
      • Incorrect mid calculation causing infinite recursion
      • Mixing indices causing wrong subarray
      4. Identify the error in the following recurrence relation and fix it:
      T(n) = 2T(n/2) + O(n^2)
      This recurrence is supposed to represent the time complexity of a divide and conquer algorithm similar to Merge Sort.
      medium
      A. Change O(n^2) to O(n) because merging takes linear time
      B. Change 2T(n/2) to T(n-1) because it is not dividing
      C. Change O(n^2) to O(log n) because merging is logarithmic
      D. No error, the recurrence is correct

      Solution

      1. Step 1: Analyze the merging cost in divide and conquer

        In Merge Sort-like algorithms, merging two halves takes O(n) time, not O(n^2).
      2. Step 2: Correct the recurrence relation

        Replace O(n^2) with O(n) to reflect the linear merging cost.
      3. Final Answer:

        Change O(n^2) to O(n) because merging takes linear time -> Option A
      4. Quick Check:

        Merging cost = O(n), not O(n^2) [OK]
      Hint: Merging in divide and conquer is linear, not quadratic [OK]
      Common Mistakes:
      • Assuming merging is quadratic
      • Changing recursive calls incorrectly
      • Ignoring the cost of merging step
      5. Given the recurrence relation T(n) = 3T(n/3) + n, what is the time complexity of the algorithm using the Master Theorem?
      hard
      A. O(log n)
      B. O(n^2)
      C. O(n^{\log_3 3}) = O(n)
      D. O(n log n)

      Solution

      1. Step 1: Identify parameters for Master Theorem

        Here, a=3, b=3, f(n)=n. Calculate log_b(a) = log_3(3) = 1.
      2. Step 2: Compare f(n) with n^{log_b(a)}

        f(n) = n and n^{log_b(a)} = n^1 = n, so f(n) = Theta(n^{log_b(a)}).
      3. Step 3: Apply Master Theorem case 2

        When f(n) = Theta(n^{log_b(a)}), T(n) = Theta(n^{log_b(a)} log n) = Theta(n log n).
      4. Final Answer:

        O(n log n) -> Option D
      5. Quick Check:

        Master Theorem case 2 gives O(n log n) [OK]
      Hint: Use Master Theorem: compare f(n) with n^{log_b(a)} [OK]
      Common Mistakes:
      • Ignoring the log factor in case 2
      • Confusing log base or parameters a and b
      • Choosing linear time 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