給定一組不含重複元素的整數數組 nums,返回該數組全部可能的子集(冪集)。數組
說明:解集不能包含重複的子集。spa
示例:code
輸入: nums = [1,2,3] 輸出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
個人:blog
ArrayList<ArrayList<Integer>> result = new ArrayList<>(); public ArrayList<ArrayList<Integer>> subsets(int[] S) { int length = S.length; ArrayList<Integer> temp = new ArrayList<>(); Arrays.sort(S); //i爲子集的長度,一次算一個長度的 for (int i=0;i<=length;i++) { subsetsHelper(S,i,0,temp); } return result; } private void subsetsHelper(int[] S,int length,int start,ArrayList<Integer> temp) { //剩餘長度爲0 if (0 == length) { //要new一個在加入結果集 result.add(new ArrayList<>(temp)); } for (int i = start; i < S.length; i++) { temp.add(S[i]); subsetsHelper(S, length - 1, i + 1, temp); temp.remove(temp.size() - 1); } }