@@ -0,0 +1,1218 @@
+public class Solution %7B%0A    public List%3CList%3CInteger%3E%3E combine(int n, int k) %7B%0A        List%3CList%3CInteger%3E%3E result = new ArrayList%3CList%3CInteger%3E%3E();%0A        if(n %3C= 0 %7C%7C k %3C= 0 %7C%7C k %3E n)%7B%0A            return result;%0A        %7D%0A        Stack st = new Stack();%0A        List%3CInteger%3E cur = new ArrayList%3CInteger%3E();%0A        %0A        for(int i = 1; i %3C= k; i++)%7B%0A            st.push(i);%0A            cur.add(i);%0A        %7D%0A        List%3CInteger%3E tmp = new ArrayList%3CInteger%3E();%0A        for(Integer i: cur)%7B%0A            tmp.add(i);%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((n - t) %3C (k - cur.size()))%7B%0A                continue;%0A            %7D%0A            while(true)%7B%0A                if(cur.size() == k)%7B%0A                    tmp = new ArrayList%3CInteger%3E();%0A                    for(int i: cur)%7B%0A                        tmp.add(i);%0A                    %7D%0A                    result.add(tmp);%0A                    break;%0A                %7D%0A                if(++t %3E n)%7B%0A                    break;%0A                %7D%0A                st.push(t);%0A                cur.add(t);%0A            %7D%0A        %7D%0A        return result;%0A    %7D%0A%7D

Q77 Combinations