189. Rotate Array

来源:互联网 发布:java解压zip文件代码 编辑:程序博客网 时间:2024/05/16 10:12

Rotate Array

Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

public class Solution {    public void rotate(int[] nums, int k) {        if (nums.length <= 1)            return;        int div = nums.length - k % nums.length;        reverse(nums, 0, div - 1);        reverse(nums, div, nums.length - 1);        reverse(nums);    }    public void reverse(int[] origin) {        for (int i = 0; i < origin.length / 2; i++) {            int temp = origin[i];            origin[i] = origin[origin.length - i - 1];            origin[origin.length - i - 1] = temp;        }    }    public void reverse(int[] origin, int srcPos, int destPos) {        while (srcPos < destPos && srcPos >= 0) {            int t = origin[srcPos];            origin[srcPos] = origin[destPos];            origin[destPos] = t;            srcPos++;            destPos--;        }    }}
0 0