46. Permutations

Alen Alex · February 9, 2026

LeetCode Link: 46. Permutations
Language: C#

Problem Statement

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

Example 1:

Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Example 2:

Input: nums = [0,1]
Output: [[0,1],[1,0]]

Example 3:

Input: nums = [1]
Output: [[1]]

Constraints:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All the integers of nums are unique.

Solution

public class Solution {
    public IList<IList<int>> Permute(int[] nums) {
        var list = new List<IList<int>>();
        BT(list, new(), nums, new());

        return list;        
    }

    private void BT(IList<IList<int>> list, List<int> temp, int[] nums, HashSet<int> set)
    {
        if (temp.Count == nums.Length)
        {
            var l = new List<int>(temp);
            list.Add(l);
        }

        for (int i=0; i<nums.Length; i++)
        {
            if (set.Contains(i))
            {
                continue;
            }

            set.Add(i);
            temp.Add(nums[i]);

            BT(list, temp, nums, set);
            temp.Remove(nums[i]);
            set.Remove(i);
        }
    }
}

Twitter, Facebook