Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Generate All Permutations of Array in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a permutation of an array?
A permutation is a way to arrange all elements of the array in every possible order without missing any element or repeating any order.
Click to reveal answer
beginner
What is the base case in a recursive function to generate permutations?
The base case is when the current position reaches the length of the array, meaning a complete permutation is formed and can be recorded or printed.
Click to reveal answer
intermediate
Why do we swap elements during permutation generation?
Swapping elements helps to fix one element at the current position and recursively generate permutations for the rest, ensuring all unique orders are explored.
Click to reveal answer
intermediate
How does backtracking help in generating permutations?
Backtracking restores the array to its original state after exploring one permutation path, allowing the algorithm to explore other possible permutations without interference.
Click to reveal answer
intermediate
What is the time complexity of generating all permutations of an array of length n?
The time complexity is O(n!), because there are n factorial possible permutations to generate and process.
Click to reveal answer
What does the base case in permutation recursion usually check?
AIf the array is sorted
BIf the array is empty
CIf the first element is fixed
DIf the current index equals the array length
Why do we swap elements back after recursive calls in permutation generation?
ATo restore the original array for the next permutation
BTo sort the array
CTo remove duplicates
DTo increase the array size
How many permutations does an array of length 3 have?
A6
B9
C3
D12
Which technique is commonly used to generate all permutations?
ADynamic programming
BGreedy algorithm
CBacktracking
DBinary search
What is the main purpose of swapping elements during permutation generation?
ATo reverse the array
BTo fix one element at the current position
CTo delete elements
DTo sort the array
Explain how recursion and backtracking work together to generate all permutations of an array.
Think about how you try one choice, then undo it to try another.
You got /5 concepts.
    Describe the steps to generate all permutations of [1, 2, 3] using swapping and recursion.
    Imagine fixing one number at a time and exploring the rest.
    You got /6 concepts.

      Practice

      (1/5)
      1. What does the process of generating all permutations of an array mean?
      easy
      A. Listing all possible orders of the array elements
      B. Sorting the array in ascending order
      C. Removing duplicate elements from the array
      D. Finding the largest element in the array

      Solution

      1. Step 1: Understand permutations

        Permutations are all possible ways to arrange elements in order.
      2. Step 2: Apply to array

        Generating all permutations means listing every possible order of the array elements.
      3. Final Answer:

        Listing all possible orders of the array elements -> Option A
      4. Quick Check:

        Permutations = all orders [OK]
      Hint: Permutations = all ways to arrange elements [OK]
      Common Mistakes:
      • Confusing permutations with sorting
      • Thinking permutations remove duplicates
      • Mixing permutations with finding max element
      2. Which of the following TypeScript function signatures correctly represents a function that generates all permutations of an array of numbers?
      easy
      A. function permute(arr: number[][]): number[]
      B. function permute(arr: number): number[]
      C. function permute(arr: number[]): number[][]
      D. function permute(arr: string[]): string

      Solution

      1. Step 1: Analyze input and output types

        The input is an array of numbers, so type is number[]. The output is all permutations, which is an array of arrays of numbers, so number[][].
      2. Step 2: Match function signature

        function permute(arr: number[]): number[][] matches input number[] and output number[][] correctly.
      3. Final Answer:

        function permute(arr: number[]): number[][] -> Option C
      4. Quick Check:

        Input array, output array of arrays [OK]
      Hint: Input array, output array of arrays for permutations [OK]
      Common Mistakes:
      • Using single number instead of array as input
      • Returning a single array instead of array of arrays
      • Mixing string and number types incorrectly
      3. What is the output of the following TypeScript code?
      function permute(arr: number[]): number[][] {
        if (arr.length === 0) return [[]];
        const result: number[][] = [];
        for (let i = 0; i < arr.length; i++) {
          const rest = [...arr.slice(0, i), ...arr.slice(i + 1)];
          for (const perm of permute(rest)) {
            result.push([arr[i], ...perm]);
          }
        }
        return result;
      }
      
      console.log(permute([1, 2]));
      medium
      A. [[1, 2], [2, 1]]
      B. [[1, 2]]
      C. [[2, 1]]
      D. []

      Solution

      1. Step 1: Understand base case and recursion

        Base case returns [[]] for empty array. For [1,2], it picks each element and permutes the rest.
      2. Step 2: Trace recursive calls for [1,2]

        First i=0: arr[i]=1, rest=[2], permute([2]) returns [[2]], so push [1,2]. Then i=1: arr[i]=2, rest=[1], permute([1]) returns [[1]], so push [2,1].
      3. Final Answer:

        [[1, 2], [2, 1]] -> Option A
      4. Quick Check:

        Permutations of [1,2] = [[1,2],[2,1]] [OK]
      Hint: Check base case and recursive build-up [OK]
      Common Mistakes:
      • Forgetting to include all permutations
      • Returning only one permutation
      • Confusing order of elements
      4. Identify the error in this TypeScript function that attempts to generate all permutations of an array:
      function permute(arr: number[]): number[][] {
        if (arr.length === 1) return [arr];
        const result: number[][] = [];
        for (let i = 0; i < arr.length; i++) {
          const rest = arr.slice(1);
          for (const perm of permute(rest)) {
            result.push([arr[i], ...perm]);
          }
        }
        return result;
      }
      medium
      A. The base case should return an empty array
      B. The function should return a flat array, not nested arrays
      C. The loop should start from 1 instead of 0
      D. The slice should exclude the current element, not always the first

      Solution

      1. Step 1: Analyze the slice operation

        The code uses arr.slice(1) always, which removes only the first element, not the current element at index i.
      2. Step 2: Correct slice to exclude current element

        To generate permutations correctly, slice should exclude arr[i], e.g., [...arr.slice(0, i), ...arr.slice(i + 1)].
      3. Final Answer:

        The slice should exclude the current element, not always the first -> Option D
      4. Quick Check:

        Exclude current element in slice [OK]
      Hint: Slice must exclude current index element [OK]
      Common Mistakes:
      • Always slicing from index 1 ignoring i
      • Wrong base case length check
      • Returning wrong data structure
      5. Given an array with possible duplicate elements, how can you modify the permutation generation function to avoid duplicate permutations?
      function permuteUnique(arr: number[]): number[][] {
        // Your code here
      }
      hard
      A. Use a Set to store all permutations after generation
      B. Sort the array first and skip duplicates during recursion
      C. Remove duplicates from the array before generating permutations
      D. Generate permutations normally without any change

      Solution

      1. Step 1: Understand duplicate permutations problem

        Duplicates in input cause repeated permutations if not handled.
      2. Step 2: Sort and skip duplicates during recursion

        Sorting helps group duplicates. During recursion, skip elements equal to previous to avoid repeated branches.
      3. Step 3: Why other options fail

        Using Set after generation is costly. Removing duplicates loses valid permutations. No change causes duplicates.
      4. Final Answer:

        Sort the array first and skip duplicates during recursion -> Option B
      5. Quick Check:

        Sort + skip duplicates = unique permutations [OK]
      Hint: Sort array and skip duplicates in recursion [OK]
      Common Mistakes:
      • Removing duplicates from input loses valid permutations
      • Using Set after generation wastes time and memory
      • Ignoring duplicates causes repeated permutations
      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