第十三章:回溯法
面试题79:所有子集
题目
参考代码
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new LinkedList<>();
if (nums.length == 0) {
return result;
}
helper(nums, 0, new LinkedList<Integer>(), result);
return result;
}
private void helper(int[] nums, int index,
LinkedList<Integer> subset, List<List<Integer>> result) {
if (index == nums.length) {
result.add(new LinkedList<>(subset));
} else if (index < nums.length) {
helper(nums, index + 1, subset, result);
subset.add(nums[index]);
helper(nums, index + 1, subset, result);
subset.removeLast();
}
}面试题80:含有k个元素的组合
题目
参考代码
面试题81:允许重复选择元素的组合
题目
参考代码
面试题82:含有重复元素集合的组合
题目
参考代码
面试题83:没有重复元素集合的全排列
题目
参考代码
面试题84:含有重复元素集合的全排列
题目
参考代码
面试题85:生成匹配的括号
题目
参考代码
面试题86:分割回文子字符串
题目
参考代码
面试题87:恢复IP
题目
参考代码
Last updated