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 --;
}
}
}
本站原创文章皆遵循“署名-非商业性使用-相同方式共享 3.0 (CC BY-NC-SA 3.0)”。转载请保留以下标注: