189. Rotate Array
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
way-1:前面删一个移到后面
way-2:后面取出来往前面插
k有可能会超过数组长度,所以要处理一下。
class Solution {
public:
void rotate(vector<int>& nums, int k)
{
//way-1
/*
if (k == 0)
return;
if (k > 0)
{
k = k % nums.size();
k = nums.size() - k;
for(int i = 1; i <= k; i++)
{
nums.push_back(nums[0]);
nums.erase(nums.begin());
}
}
else
{
k = k % nums.size();
k = nums.size() - k;
for(int i=1;i<=k;i++)
{
nums.erase(nums.begin());
nums.push_back(0);
}
}
*/
//way-2
if (k == 0)
return;
if (k > 0)
{
for (int i = 0; i < k; i++)
{
nums.insert(nums.begin(), nums[nums.size()-1]);
nums.pop_back();
}
}
else
{
k = -k;
for (int i = 0; i < k; i++)
{
nums.erase(nums.begin());
nums.push_back(0);
}
}
}
};