1. 题目原址
https://leetcode.com/problems/rotate-array/
2. 题目描述
3.题目大意
给定一个数组,和一个整数k, 将第k个数后面的数移动到数组的前面
4. 解题思路
采用三步旋转法
- 先将前k个数(包括第k个数)逆序
- 再将第k个数后面的数(不包括第k个数)逆序
- 最后将整个数组逆序
5. AC代码
class Solution {
public void rotate(int[] nums, int k) {
k %= nums.length;
reverse(nums,0,nums.length - k - 1);
reverse(nums,nums.length - k,nums.length - 1);
reverse(nums,0,nums.length - 1);
}
private void reverse(int[] nums, int start, int end) {
while(start < end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start ++;
end --;
}
}
}
6. 相似题目
【1】 61. Rotate List https://leetcode.com/problems/rotate-list/
解法:https://blog.csdn.net/xiaojie_570/article/details/91433622