欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > LeetCode 90-子集Ⅱ

LeetCode 90-子集Ⅱ

2025/2/25 12:58:03 来源:https://blog.csdn.net/qq_45801839/article/details/143752254  浏览:    关键词:LeetCode 90-子集Ⅱ

题目链接:LeetCode90

欢迎留言交流,每天都会回消息。

可以先看子集,本题思路是最笨的一种方法,将子集中的结果进行了去重和排序。

class Solution {//存储返回结果的集合List<List<Integer>> rs = new ArrayList<>();//存储子集的临时数组LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> subsetsWithDup(int[] nums) {backTracking(nums, 0);//去重复操作List<List<Integer>> rs1 = new ArrayList<>();for(List<Integer> list: rs){//对集合中的每一个子集进行排序,为后续去重复做基础Collections.sort(list);//去重复操作if(!rs1.contains(list)){rs1.add(list);}}return rs1;}void backTracking(int[] nums, int startIdx){//和其他的递归不同,这里不是将递归中叶子节点的元素加入最终集合中,这里时将每个节点的结果都加入到结果集合中rs.add(new ArrayList<>(path));//终止条件if(startIdx >= nums.length){return;}for(int i = startIdx; i < nums.length; i++){//添加单个元素到子集中path.add(nums[i]);//递归backTracking(nums, i + 1);//回溯path.removeLast();}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词