@@ -0,0 +1,1498 @@
+public class Solution %7B%0A    public List%3CList%3CInteger%3E%3E subsets(int%5B%5D nums) %7B%0A        List%3CList%3CInteger%3E%3E result = new ArrayList%3CList%3CInteger%3E%3E();%0A        Arrays.sort(nums);%0A        %0A        for(int i = 0; i %3C= nums.length; i ++)%7B%0A            result.addAll(subsetsN(nums, i));%0A        %7D%0A        return result;%0A    %7D%0A    %0A    public List%3CList%3CInteger%3E%3E subsetsN(int%5B%5D nums, int n)%7B%0A        Stack st = new Stack();%0A        List%3CInteger%3E cur = new ArrayList%3CInteger%3E();%0A        List%3CList%3CInteger%3E%3E result = new ArrayList%3CList%3CInteger%3E%3E();%0A        List%3CInteger%3E tmp;%0A        int len = nums.length;%0A        %0A        for(int i = 0; i %3C n; i ++)%7B%0A            st.push(i);%0A            cur.add(i);%0A        %7D%0A        tmp = new ArrayList%3CInteger%3E();%0A        for(int i: cur)%7B%0A            tmp.add(nums%5Bi%5D);%0A        %7D%0A        result.add(tmp);%0A        while(!st.empty())%7B%0A            int t = (int) st.pop();%0A            cur.remove(new Integer(t));%0A            if(len - t %3C= n - cur.size() )%7B%0A                continue;%0A            %7D%0A            while(true)%7B%0A                if(cur.size() == n)%7B%0A                    tmp = new ArrayList%3CInteger%3E();%0A                    for(int i: cur)%7B%0A                        tmp.add(nums%5Bi%5D);%0A                    %7D%0A                    result.add(tmp);%0A                    break;%0A                %7D%0A                if(++t %3E len)%7B%0A                    break;%0A                %7D%0A                st.push(t);%0A                cur.add(t);%0A            %7D%0A        %7D%0A        return result;%0A    %7D%0A%7D

Q78 Subsets