⚠️ 有重复元素,去重前后差多少
[1, 2, 2] 里有两个一样的 2。一边不去重、一边去重,各生成一遍全部子集。运行下面这段程序:
def subs(a):
res = []
path = []
def dfs(s):
res.append(list(path))
for i in range(s, len(a)):
path.append(a[i])
dfs(i + 1)
path.pop()
dfs(0)
return res
def subs_uniq(a):
a = sorted(a)
res = []
path = []
def dfs(s):
res.append(list(path))
for i in range(s, len(a)):
if i > s and a[i] == a[i - 1]:
continue
path.append(a[i])
dfs(i + 1)
path.pop()
dfs(0)
return res
print(str(len(subs([1, 2, 2]))) + "/" + str(len(subs_uniq([1, 2, 2]))))
全部评论