LeetCode 189 轮转数组
🟠 中等偏上 https://leetcode.cn/problems/rotate-array/description/
环式更新
每次拿起一个数,递归式更新数组。

这个过程可能两次就结束了,例如 [-1,-100,3,99]
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
int i = 0;
int count = 0;
while (count < n - 1) {
int index = i;
int i_num = nums[i];
nums[i] = -1;
//递归式while 递归函数输入是上面 index 和i_num,nums[i] = -1 设置初始状态。
//递归函数 每次将 index处的数值 i_num 放置到下一个位置,并递归式调用下一次(这里是循环即在最后更新递归函数输入)
while (true) {
int next_index = (index + k)%n;
int next_num = nums[next_index];
if (nums[next_index] == -1) {
nums[next_index] = i_num;
count++;
break;
} else {
nums[next_index] = i_num;
count++;
//更新递归函数输入
index = next_index;
i_num = next_num;
}
}
i++;
}
}
};