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