每日刷题191203 --回溯算法
虽然不是每天都刷,但还是不想改标题,(手动狗头 题目及解法来自于力扣(LeetCode), 传送门 。 算法(78) : 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 这道题我自己其实一开始没有什么比较好的想法,希望能用循环来解决,但写着写着发现处理情况有些多/循环嵌套次数过多。来一起看看网友给的解法吧,回溯法: 1 public class Solution { 2 //回溯法 3 private IList<IList<int>> res; 4 private void find(int[] nums, int begin, IList<int> pre) 5 { 6 // 没有显式的递归终止 7 res.Add(new List<int>(pre));// 注意:这里要 new 一下 8 for (int i = begin; i < nums.Length; i++) 9 { 10 pre.Add(nums[i]); 11 find(nums, i + 1, pre); 12 pre.RemoveAt(pre.Count - 1);//