【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合

简介: 解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。

1 题目

题目描述:

给定一个可能有重复数字的整数数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次,解集不能包含重复的组合。

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

提示:

1 <= candidates.length <= 100
1 <= candidates[i] <= 50
1 <= target <= 30

2 解析

深度遍历,需要考虑去重复值

3 Python实现

def combinationSum(candidates, target) :
    # write code here
    ans = []
    candidates.sort()
    n = len(candidates)
    def dfs(idx,res):
        if sum(res)>target:
            return 
        if sum(res)==target:
            ans.append(res[:])
            return 
        for i in range(idx,n):
            if i>idx and candidates[i]==candidates[i-1]:# 去重复
                continue
            res.append(candidates[i])
            dfs(i+1,res)
            res.pop()
    dfs(0,[])
    return ans
目录
相关文章
|
20天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
19天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
28天前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
23 4
|
27天前
|
程序员 Python
Python 将元素添加到列表
【8月更文挑战第21天】
35 3
|
1月前
|
算法 数据处理 Python
Python中的集合的运算
Python中的集合的运算
|
1月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
15 1
|
19天前
|
Python
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
python在列表、元素、字典、集合和numpy的数组前加上星号 * 是什么含义,以及*args和**kwargs的使用
24 0
|
20天前
|
运维 算法 数据挖掘
5个适合新手练习的Python刷题网站
5个适合新手练习的Python刷题网站
|
26天前
|
数据挖掘 数据处理 Python
数据处理新纪元:Python集合内置方法让你告别繁琐,轻松驾驭海量数据!
【8月更文挑战第22天】本文通过电商用户购买数据案例,展示了Python集合在高效数据处理中的应用。首先,利用Pandas读取`purchase_data.csv`文件,并通过内置方法快速概览数据。接着,创建商品ID集合进行数据分析,运用集合的并集、交集及差集等运算揭示用户购买行为模式。最后,借助集合推导式精简创建用户购买商品集合的过程,全方位呈现集合的强大功能。
20 0
|
28天前
|
存储 数据挖掘 程序员
深入理解Python中的集合
【8月更文挑战第20天】
31 0