@@ -0,0 +1,1213 @@
+public class Solution %7B%0A    /**%0A     * @param nums: An array of integers%0A     * @return: nothing%0A     */%0A    public void reverse(int%5B%5D num, int start, int end) %7B%0A        for (int i = start, j = end; i %3C j; i++, j--) %7B%0A            int temp = num%5Bi%5D;%0A            num%5Bi%5D = num%5Bj%5D;%0A            num%5Bj%5D = temp;%0A        %7D%0A    %7D%0A    %0A    public void nextPermutation(int%5B%5D num) %7B%0A        // find the last increase index%0A        int index = -1;%0A        for (int i = num.length - 2; i %3E= 0; i--) %7B%0A            if (num%5Bi%5D %3C num%5Bi + 1%5D) %7B%0A                index = i;%0A                break;%0A            %7D%0A        %7D%0A        if (index == -1) %7B%0A            reverse(num, 0, num.length - 1);%0A            return;%0A        %7D%0A        %0A        // find the first bigger one%0A        int biggerIndex = index + 1;%0A        for (int i = num.length - 1; i %3E index; i--) %7B%0A            if (num%5Bi%5D %3E num%5Bindex%5D) %7B%0A                biggerIndex = i;%0A                break;%0A            %7D%0A        %7D%0A%0A        // swap them to make the permutation bigger%0A        int temp = num%5Bindex%5D;%0A        num%5Bindex%5D = num%5BbiggerIndex%5D;%0A        num%5BbiggerIndex%5D = temp;%0A        %0A        // reverse the last part%0A        reverse(num, index + 1, num.length - 1);%0A    %7D%0A%7D

add 190