码迷,mamicode.com
首页 > 编程语言 > 详细

[leetcode]78. Subsets数组子集

时间:2018-06-16 11:58:03      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:index   contain   void   leetcode   out   add   evel   掌握   class   

Given a set of distinct integers, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Example:

Input: nums = [1,2,3]
Output:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

 

题意:

给定一个含不同整数的集合,返回其所有的子集

 

思路:

backtracking的高频题,需要掌握

一、Assumption: 

返回结构是否包含空集?

多个解按什么顺序返回?

给定input集合内有无dupulicates?

 

二、High Level带着面试官walk through:

生成ArrayList作为每条path的记录,扔到result里

以当前index为开头,call helper function, 使得在index之后剩下可用的item中选一个加到当前path后面

 

代码:

 1 class Solution {
 2     public List<List<Integer>> subsets(int[] nums) {
 3         List<List<Integer>> result = new ArrayList<>();   
 4         List<Integer> path = new ArrayList<>(); 
 5         helper(nums,0, path, result);
 6         return result;
 7     }
 8     private void helper(int[]nums, int index, List<Integer> path, List<List<Integer>> result){
 9         result.add(new ArrayList<>(path));
10         
11         for(int i = index; i< nums.length; i++){
12             path.add(nums[i]);
13             helper(nums, i+1, path, result);
14             path.remove(path.size()-1);
15         }
16     }
17 }

 

[leetcode]78. Subsets数组子集

标签:index   contain   void   leetcode   out   add   evel   掌握   class   

原文地址:https://www.cnblogs.com/liuliu5151/p/9190029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!