【发布时间】:2021-01-29 01:36:57
【问题描述】:
我的任务是打印给定长度的所有子集,我创建了打印所有子集的函数。一切正常,生成子集,但每次调用的输出都是错误的。例如,如果我调用 print(get_subsets([1,2,3],2)),则输出为 [1,2] [1,3] [2,3] 和 [3]。当然 3 不应该在那里,我不知道为什么。任何帮助都将受到赞赏和反馈。
def get_subsets(nums, k):
all_subsets = []
_gen_subsets(nums =nums,curr_idx =0,curr_subset=[],
all_subsets=all_subsets)
for curr_subset in all_subsets:
if len(curr_subset) > k or len(curr_subset) < k:
all_subsets.remove(curr_subset)
return all_subsets
def _gen_subsets(nums,curr_idx, curr_subset, all_subsets):
if curr_idx >= len(nums):
all_subsets.append(curr_subset)
else:
itr_subset = curr_subset.copy()
itr_subset.append(nums[curr_idx])
_gen_subsets(nums=nums,
curr_idx=curr_idx+1,
curr_subset=itr_subset,
all_subsets=all_subsets)
_gen_subsets(nums=nums,
curr_idx=curr_idx+1,
curr_subset=curr_subset,
all_subsets=all_subsets)
【问题讨论】:
-
在您使用或操作时将
f len(curr_subset) > k or len(curr_subset) < k:更改为if len(curr_subset)!=k,此条件仅在length ==k时失败,