回溯算法解决子集、排列、组合问题
78.子集
给你一个整数数组
nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序返回解集。
1 | |
90.子集 II
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按任意顺序排列。
1 | |
77.组合
给定两个整数
n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按任何顺序返回答案。
1 | |
39.组合总和
给你一个 无重复元素的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有不同组合 ,并以列表形式返回。你可以按任意顺序返回这些组合。candidates 中的同一个 数字可以无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。
1 | |
40.组合总和 II
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用 一次 。
注意:解集不能包含重复的组合。
1 | |
216.组合总和 III
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:
- 只使用数字1到9
- 每个数字 最多使用一次
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
1 | |
46.全排列
给定一个不含重复数字的数组
nums,返回其所有可能的全排列 。你可以按任意顺序返回答案。
1 | |
47.全排列 II
给定一个可包含重复数字的序列
nums,按任意顺序 返回所有不重复的全排列。
1 | |
31.下一个排列
1 | |