这四个使用DFS来求解所有组合和排列的例子很有代表性,这里做一个总结:

1.不带重复元素的子集问题

 1  public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
 2         // write your code here
 3         ArrayList<ArrayList<Integer>> results = new ArrayList<>();
 4         if (nums == null || nums.length == 0) {
 5             return results;
 6         }
 7         Arrays.sort(nums);
 8         DFS(results, new ArrayList<Integer>(), nums, 0);
 9         return results;
10     }
11     public void DFS(ArrayList<ArrayList<Integer>> results, ArrayList<Integer> cur,
12                     int[] nums, int start) {
13         results.add(new ArrayList<Integer>(cur));
14         for (int i = start; i < nums.length; i++) {
15             cur.add(nums[i]);
16             DFS(results, cur, nums, i+1);
17             cur.remove(cur.size()-1);
18         }      
19     }
View Code

相关文章:

  • 2021-07-10
  • 2022-01-16
  • 2022-02-23
  • 2022-01-26
  • 2021-12-22
  • 2018-09-04
猜你喜欢
  • 2021-11-29
  • 2022-03-03
  • 2021-12-05
  • 2022-12-23
  • 2021-11-13
相关资源
相似解决方案