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可能是大于n的,思路:
- 先倒置
- 倒置0-k
- 倒置后半部分
类似题目:Reverse Words in a String II
public class Solution {
public void rotate(int[] nums, int k) {
while(k>nums.length){
k -= nums.length;
}
rev(nums,0,nums.length-1);
rev(nums,0,k-1);
rev(nums,k,nums.length-1);
}
public void rev(int[] nums,int start,int end){
while(start<end){
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start ++;
end --;
}
}
}
微信扫一扫
支付宝扫一扫