题解 | #集合的所有子集#
集合的所有子集
http://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9
import java.util.*;
public class Solution {
    public static ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {
        ArrayList<Integer> track = new ArrayList<>();
        Arrays.sort(S);
        dfs(S, 0, track);
        Collections.sort(res,(o1,o2)->{
            return o1.size()-o2.size();
        });
        return res;
    }
    public void dfs(int[] arr, int index, ArrayList<Integer> temp){
        //if(index>=arr.length) return;
        res.add(new ArrayList<Integer>(temp));
        for(int i=index;i<arr.length;i++){
            temp.add(arr[i]);
            dfs(arr,i+1,temp);
            temp.remove(temp.size()-1);
        }
    }
}
回溯后对输出按照元素的长度排个序
