您的位置:首页 > 其它

189. Rotate Array 旋转数组

2017-12-06 10:51 357 查看
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.

问题解释:将后k个数值前置
class Solution {
public void rotate(int[] nums, int k) {
k=k%nums.length;//确保k在nums.length范围内
reverse(nums,0,nums.length-1);//翻转全部数组
reverse(nums,0,k-1);//翻转数组的前k个数值
reverse(nums,k,nums.length-1);//翻转数组的后n-k个数值
}
public void reverse(int[] nums, int start, int end){//将数组中的所有数值全部翻转
for(int i=start,j=end;i<j;i++,j--){
int tmp=nums[j];
nums[j]=nums[i];
nums[i]=tmp;
}
}
}

问题思路:
[1,2,3,4,5,6,7]
全部翻转为[7,6,5,4,3,2,1]
翻转前k个数值[5,6,7,4,3,2,1]
翻转后n-k个数值[5,6,7,1,2,3,4]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: