题目描述
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3]
[1,3,2]
[2,1,3]
[2,3,1]
[3,1,2]
[3,2,1]
]
代码
public class Solution {
public IList<IList<int>> Permute(int[] nums) {
List<IList<int>> result = new List<IList<int>>();
int[] visited = new int[nums.Length];
backtrack(result,new List<int>(),nums,visited);
if (nums == null || nums.Length == 0)
return result;
return result;
}
public void backtrack(List<IList<int>> result,List<int> temp,int[] nums,int[] visited)
{
if(temp.Count==nums.Length)
{
result.Add(new List<int>(temp));
return;
}
for(int i=0;i<nums.Length;i++)
{
if(visited[i]==0)
{
temp.Add(nums[i]);
visited[i]=1;
backtrack(result,temp,nums,visited);
visited[i]=0;
temp.RemoveAt(temp.Count-1);
}
}
}
}