您的位置:首页 > 其它

LeetCode Rotate Array(数组的旋转)

2015-07-20 18:53 387 查看
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]
.

题意:给出一个数组,让其右移k 位,求新的数组

思路:先将[0,len-1]翻转,再[0,k-1]之间翻转,[k,len-1]之间翻转

代码如下

public class Solution
{
public void rotate(int[] nums, int k)
{
int len = nums.length;
int i = 0, j = len - 1;
while (i < j)
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
i++;
j--;
}

if (k > len) k -= len;

i = 0;
j = k - 1;
while (i < j)
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
i++;
j--;
}

i = k;
j = len - 1;
while (i < j)
{
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
i++;
j--;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: