LeetCode 47. 全排列 II C#
原题链接
中等
作者:
hpstory
,
2022-06-22 15:57:00
,
所有人可见
,
阅读 109
C# 代码
public class Solution {
private List<IList<int>> result = new List<IList<int>>();
private bool[] used;
public IList<IList<int>> PermuteUnique(int[] nums) {
Array.Sort(nums);
used = new bool[nums.Length];
DFS(new List<int>(), nums);
return result;
}
private void DFS(List<int> subset, int[] nums){
if (subset.Count == nums.Length){
result.Add(new List<int>(subset));
return;
}
for (int i = 0; i < nums.Length; i++){
if (i > 0 && nums[i] == nums[i - 1] && !used[i - 1]) continue;
if (!used[i]){
used[i] = true;
subset.Add(nums[i]);
DFS(subset, nums);
used[i] = false;
subset.RemoveAt(subset.Count - 1);
}
}
}
}