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);
}
}
}