Bird
Raised Fist0
DSA Javaprogramming~5 mins

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

Choose your learning style10 modes available
Recall & Review
beginner
What is a permutation of an array?
A permutation of an array is a rearrangement of its elements in any possible order. For example, for [1, 2], the permutations are [1, 2] and [2, 1].
Click to reveal answer
beginner
What is the base case in a recursive function to generate all permutations of an array?
The base case occurs when the current index reaches the length of the array, meaning a complete permutation has been formed and can be recorded or printed.
Click to reveal answer
intermediate
How does swapping elements help in generating permutations?
Swapping elements allows us to fix one element at the current position and recursively generate permutations for the remaining positions, ensuring all orderings are explored.
Click to reveal answer
intermediate
Why do we swap back elements after recursive calls in permutation generation?
Swapping back restores the original array order before the next iteration, so that other permutations can be generated correctly without interference from previous swaps.
Click to reveal answer
intermediate
What is the time complexity of generating all permutations of an array of size n?
The time complexity is O(n!), because there are n! (factorial of n) 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 contains duplicates
CIf the current index equals the array length
DIf the first element is fixed
Why do we swap elements back after recursive calls in permutation generation?
ATo increase recursion depth
BTo sort the array
CTo remove duplicates
DTo restore the original array for the next permutation
How many permutations does an array of size 3 have?
A3
B6
C9
D12
Which technique is commonly used to generate all permutations of an array?
ABacktracking
BDivide and conquer
CGreedy algorithm
DDynamic programming
What is the role of swapping in permutation generation?
ATo fix an element at the current position
BTo sort the array
CTo delete elements
DTo reverse the array
Explain how recursion and swapping work together to generate all permutations of an array.
Think about fixing one element at a time and exploring all options for the rest.
You got /4 concepts.
    Describe the steps to generate all permutations of [1, 2, 3] using backtracking.
    Visualize swapping elements and moving forward step by step.
    You got /5 concepts.

      Practice

      (1/5)
      1. What does generating all permutations of an array mean?
      easy
      A. Sorting the array in ascending order
      B. Listing all possible orders of the array elements
      C. Finding the largest element in the array
      D. Removing duplicate elements from 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 B
      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 Java method signature correctly defines a function to generate permutations of an integer array?
      easy
      A. public void generatePermutations(int[] arr, int start)
      B. void generatePermutations(int arr[], int start) public
      C. public int generatePermutations(int[] arr, int start)
      D. public static generatePermutations(int[] arr, int start)

      Solution

      1. Step 1: Check method signature syntax

        In Java, method signature starts with access modifier, return type, method name, and parameters.
      2. Step 2: Validate options

        public void generatePermutations(int[] arr, int start) correctly uses 'public void' and parameter types. void generatePermutations(int arr[], int start) public has wrong order. public int generatePermutations(int[] arr, int start) returns int but should be void. public static generatePermutations(int[] arr, int start) misses return type.
      3. Final Answer:

        public void generatePermutations(int[] arr, int start) -> Option A
      4. Quick Check:

        Correct Java method syntax = public void generatePermutations(int[] arr, int start) [OK]
      Hint: Java method = access + return type + name + params [OK]
      Common Mistakes:
      • Missing return type in method signature
      • Incorrect order of access modifier and return type
      • Wrong return type for void methods
      3. What is the output of the following Java code snippet?
      public class PermTest {
        public static void permute(int[] arr, int start) {
          if (start == arr.length - 1) {
            for (int num : arr) System.out.print(num + " ");
            System.out.println();
            return;
          }
          for (int i = start; i < arr.length; i++) {
            int temp = arr[start];
            arr[start] = arr[i];
            arr[i] = temp;
            permute(arr, start + 1);
            temp = arr[start];
            arr[start] = arr[i];
            arr[i] = temp;
          }
        }
        public static void main(String[] args) {
          int[] arr = {1, 2};
          permute(arr, 0);
        }
      }
      medium
      A. 1 2 \n2 1 \n
      B. 1 2 \n1 2 \n
      C. 2 1 \n1 2 \n
      D. No output

      Solution

      1. Step 1: Trace recursive calls for arr = {1, 2}

        Start with start=0, swap arr[0] with arr[0] (no change), recurse with start=1, print 1 2. Then swap back, swap arr[0] with arr[1], arr becomes {2,1}, recurse start=1, print 2 1.
      2. Step 2: Confirm output lines

        Two lines printed: '1 2' and '2 1', each followed by newline.
      3. Final Answer:

        1 2 \n2 1 \n -> Option A
      4. Quick Check:

        All permutations of [1,2] = 1 2 and 2 1 [OK]
      Hint: Swap and recurse to generate permutations [OK]
      Common Mistakes:
      • Forgetting to swap back after recursion
      • Printing before reaching last index
      • Confusing order of swaps
      4. Identify the error in this Java method for generating permutations:
      public void permute(int[] arr, int start) {
        if (start == arr.length) {
          System.out.println(Arrays.toString(arr));
          return;
        }
        for (int i = start; i < arr.length; i++) {
          int temp = arr[start];
          arr[start] = arr[i];
          arr[i] = temp;
          permute(arr, start + 1);
        }
      }
      medium
      A. Using Arrays.toString incorrectly
      B. Incorrect base case condition
      C. Missing swap back after recursive call
      D. Wrong loop range in for loop

      Solution

      1. Step 1: Analyze swapping logic

        After swapping arr[start] and arr[i], the method calls recursion but does not swap back, so array stays changed for next iterations.
      2. Step 2: Identify missing swap back

        To restore original array before next iteration, swap back is needed after recursive call.
      3. Final Answer:

        Missing swap back after recursive call -> Option C
      4. Quick Check:

        Swap back needed to restore array [OK]
      Hint: Always swap back after recursion to restore array [OK]
      Common Mistakes:
      • Not swapping back after recursion
      • Incorrect base case index
      • Misusing Arrays.toString for printing
      5. You want to generate all permutations of an array with possible duplicate elements, but avoid printing duplicate permutations. Which approach is best?
      hard
      A. Use a HashSet to store and print only unique permutations after generating all
      B. Only swap elements if they are different values
      C. Generate all permutations without any checks and print all
      D. Sort the array first and skip swapping duplicate elements during recursion

      Solution

      1. Step 1: Understand duplicates in permutations

        Duplicates cause repeated permutations if not handled. Sorting helps group duplicates together.
      2. Step 2: Skip swapping duplicates during recursion

        By sorting and skipping swaps of same values at the same recursion level, duplicates are avoided efficiently.
      3. Final Answer:

        Sort the array first and skip swapping duplicate elements during recursion -> Option D
      4. Quick Check:

        Sort + skip duplicates = unique permutations [OK]
      Hint: Sort array and skip duplicate swaps to avoid repeats [OK]
      Common Mistakes:
      • Generating all then filtering duplicates (inefficient)
      • Not sorting before recursion
      • Only swapping if values differ misses some 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