@@ -0,0 +1,1241 @@
+class Solution %7B%0A    public void nextPermutation(int%5B%5D nums) %7B%0A        // find change idxOri, idxReplace,%0A        // nums are increasing from nums%5BN-1%5D to nums%5BidxOri%5D;%0A        // nums%5BidxOri%5D is a litter lower than nums%5BidxReplace%5D, and make nums%5BidxOri:%5D increasing (reverse)%0A        // swap and then get bigger%0A        if (nums.length %3C 2) %7B%0A            return;%0A        %7D%0A        int idxOri = nums.length - 2;%0A        while(idxOri %3E= 0 && nums%5BidxOri%5D %3E= nums%5BidxOri + 1%5D) %7B%0A            idxOri--;%0A        %7D%0A%0A%0A        if (idxOri %3E= 0) %7B%0A            int idxReplace = nums.length - 1;%0A            while(nums%5BidxReplace%5D %3C= nums%5BidxOri%5D) %7B%0A                idxReplace--;%0A            %7D%0A        %0A            System.out.printf(%22idxOri:%25d, idxReplace: %25d %5Cn%22, idxOri, idxReplace);            %0A            swap(idxOri, idxReplace, nums);            %0A        %7D%0A        System.out.println(Arrays.toString(nums));%0A%0A        reverse(idxOri + 1, nums.length - 1, nums);%0A    %7D%0A%0A    private void reverse(int be, int end, int%5B%5D nums) %7B%0A        do %7B%0A            swap(be, end, nums);%0A        %7D while(++be %3C --end);%0A    %7D%0A%0A    private void swap(int i, int j, int%5B%5D nums) %7B%0A        int temp = nums%5Bj%5D;%0A        nums%5Bj%5D = nums%5Bi%5D;%0A        nums%5Bi%5D = temp;%0A    %7D%0A%7D%0A

Create NextPermutation.java