标签:
原题链接在这里:https://leetcode.com/problems/subsets/
这是一道NP题目,取res中现有list,每个list都加新的元素nums[i]然后再放回res中,同时保留原有list. 从[]开始一次加一个新元素。
Time O(2^n).
AC Java:
1 public class Solution { 2 public List<List<Integer>> subsets(int[] nums) { 3 List<List<Integer>> res = new ArrayList<List<Integer>>(); 4 if(nums == null || nums.length == 0){ 5 return res; 6 } 7 //Add [] to res. 8 res.add(new ArrayList<Integer>()); 9 //non-descending order 10 Arrays.sort(nums); 11 for(int i = 0; i<nums.length; i++){ 12 int size = res.size(); 13 for(int j = 0; j< size; j++){ 14 //add new element to each element of res 15 ArrayList<Integer> elem= new ArrayList<Integer>(res.get(j)); 16 elem.add(nums[i]); 17 res.add(elem); 18 } 19 } 20 return res; 21 } 22 }
标签:
原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/4841881.html