class Solution {
public void rotate(int[] nums, int k) {
int len = nums.length; // 数组长度
k = k % len; // 简化一下k
// 外循环
int count = 0; // 计数器
for (int start = 0; count < len; start ++) {
int cur= start; // 当前位置
int curVal = nums[pre]; // 当前位置元素
do {
int next = (cur+ k) % len; // 要移动到的位置next
int tmp = nums[next]; // 记录next位置本来存在的元素tmp
nums[next] = curVal; // 完成换位
curVal = tmp; // 当前元素变成原位置元素tmp
cur= next; // 当前位置变为next
count ++; // 计数器+1,总共交换len次
} while (cur!= start); // 如果当前位置回到原位,外循环start+1,切换到下一个组交换
}
}
原文:https://www.cnblogs.com/xfzhao1419/p/14607882.html