【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
给定一个数组,然后给出k,要求把数组的最后k个数位置不变地移到数组的开头
思路:
我们先把整个数组反转,那么后面的数就到了前面,然后反转前面k个数与后面n-k个数即可达到题目需求
class Solution
{
public:
void rotate(vector<int>& nums, int k)
{
int n = nums.size(),i,j;
k = k % n;
for(i = 0; i<n/2; i++)
swap(nums[i],nums[n-1-i]);
for(i = 0; i<k/2; i++)
swap(nums[i],nums[k-1-i]);
for(i = k; i<(n+k)/2; i++)
swap(nums[i],nums[n-1-i+k]);
}
};