当前位置: 首页 > 后端技术 > Python

LeetCode0090.SubsetsIISubsetII【Python】

时间:2023-03-26 13:55:07 Python

ProblemLeetCode给定一个可能包含重复的整数集合,nums,返回所有可能的子集(幂集)。注意:解集不能包含重复的子集。例子:输入:[1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]可能包含An的问题整数数组nums个重复元素,返回此数组的所有可能子集(幂集)。解释:解集不能包含重复的子集。示例:输入:[1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]LeetCode0070中的回溯问题的基础,判断当前元素与前一个元素是否相同,如果相同则剪枝。输入importListclass解决方案的Python3代码:defsubsetsWithDup(self,nums:List[int])->List[List[int]]:res=[]n=len(nums)#Sortnumsfirstnums.sort()defbacktrack(nums,start,path):#添加resres.append(path)#i从start增加foriinrange(start,n):#剪枝:如果i>start,则当前元素与前一个元素相同andnums[i-1]==nums[i]:continue#回溯和更新路径#path.append([nums[i]])backtrack(nums,i+1,path+[nums[i]])#path.pop()backtrack(nums,0,[])返回resGitHublinkPython