标签: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 }
标签:index contain void leetcode out add evel 掌握 class
原文地址:https://www.cnblogs.com/liuliu5151/p/9190029.html