public class RotateArray {
}

@@ -20,10 +20,1522 @@
 Array %7B%0A
+    static public void rotate(int%5B%5D nums, int k) %7B%0A        if (nums.length %3C 2 %7C%7C nums.length==k %7C%7C k==0) %7B%0A            return;%0A        %7D%0A        int done = 0;%0A        int idx = 0;%0A        int startIdx = 0;%0A        k = (nums.length%3Ek)?nums.length-k:(nums.length-(k%25nums.length));%0A        int prev = nums%5BstartIdx%5D;%0A        while (done != nums.length) %7B%0A            int nxt = (idx+k)%25nums.length;%0A%0A            if (nxt == startIdx) %7B%0A                if (done+1 != nums.length) %7B%0A                    nums%5Bidx%5D = prev;%0A                    startIdx++;%0A                    idx = startIdx;%0A                    nxt = idx;%0A                    prev = nums%5Bidx%5D;%0A                %7D else %7B%0A                    nums%5Bidx%5D = prev;%0A                %7D%0A            %7D else %7B%0A                nums%5Bidx%5D = nums%5Bnxt%5D;%0A            %7D%0A            idx = nxt;%0A            done++;%0A        %7D%0A    %7D%0A%0A    static public void rotateV2(int%5B%5D nums, int k) %7B%0A        if (nums.length == 0) return;%0A        int n = nums.length;%0A        while ((k %25= n) %3E 0 && n %3E 1) %7B%0A            int range = n - k;%0A            for (int i = 1; i %3C= range; i++) %7B%0A                int val = nums%5Bn - i%5D;%0A                nums%5Bn - i%5D = nums%5Bn - i - k%5D;%0A                nums%5Bn - i - k%5D = val;%0A            %7D%0A            n = k;%0A            k = n - (range %25 k);%0A        %7D%0A    %7D%0A%0A    public static void main(String %5B %5D args) %7B%0A%0A        int %5B%5D num = new int%5B%5D%7B1,2,3,4,5,6%7D;%0A        rotate(num, 4);%0A%0A        for (int v : num) %7B%0A            System.out.print(v+%22 %22);%0A        %7D%0A    %7D%0A
 %7D%0A

add version one for rotate array