作者:carlsun-2
链接:https://leetcode-cn.com/problems/subsets-ii/solution/90-zi-ji-iiche-di-li-jie-zi-ji-wen-ti-ru-djmf/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
怎么会感觉这个代码有点难受......
个人微改:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
class subset02{
List<List<Integer>> result = new ArrayList<>();
LinkedList<Integer> path = new LinkedList<>();
boolean[] used;
public List<List<Integer>> subsetsWithDup(int[] nums){
if(nums.length==0) {
result.add(path);
return result;
}
used = new boolean[nums.length];
dfs(nums,0);
return result;
}
public void dfs(int[] nums,int startIndex) {
result.add(new ArrayList<>(path));
if(startIndex>=nums.length) {
return;
}
for(int i=startIndex;i<nums.length;i++) {
if(i>0 && nums[i]==nums[i-1] && used[i-1]==false) {
continue;
}
path.add(nums[i]);
used[i]=true;
dfs(nums,i+1);
path.removeLast();
used[i]=false;
}
}
}
public class Subsetttt_II {
public static void main(String args[]) {
subset02 hah = new subset02();
int nums[] = new int[] {1,2,2};
System.out.println(hah.subsetsWithDup(nums));
}
}

本文介绍了如何解决LeetCode第90题——子集II的问题,提供了一个使用Java实现的递归算法。代码通过深度优先搜索遍历数组,避免重复子集,并将路径添加到结果列表中。博主还分享了个人对原代码的微调,使得代码更易读。

被折叠的 条评论
为什么被折叠?



