力扣90题:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。

这篇博客介绍了如何解决力扣90题,即给定一个可能有重复元素的整数数组,求解其所有不重复的子集。文章通过三种方法进行解答:递归法、回溯法和DFS深度优先法,并在解法中加入排序步骤以处理重复元素,确保子集不重复。
摘要由CSDN通过智能技术生成

三种解法:

1.递归法(扩展法)

同力扣78题解法差不多,加入Arrays.sort(nums)进行排序;

结束后把res转变为hashset集合,集合的特点是没有重复的元素,所以做到去重的效果,最后再把集合转变为list;

2. 回溯法

也是同78题类似,加入Arrays.sort(nums)进行排序;

在backtrack循环中加入

if (i > start && nums[i] == nums[i - 1])判断语句

i > start 的作用是因为判断此次循环是否为第一次循环,和num[i] == num[i-1]共同作用后就可以看作:

判断第上一次循环的数和本次循环的数是否相同,如果相同就跳过

 

3.DFS(深度优先)

同回溯法类似,但是深度优先。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值