要求
代码
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int cycle_idx = nums.size() - (k % nums.size()) - 1;
vector<int> temp = nums;
for (int i = 0; i < nums.size(); i++)
{
cycle_idx = (cycle_idx >= nums.size() - 1) ? 0 : cycle_idx + 1;
nums[i] = temp[cycle_idx];
}
}
};
把整个数组想象成一个环形的队列,根据k的值来选取更新后第一个位置的值,然后循环这个环形的队列。