题目
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
题解
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int len = nums.size();
vector<int>n=nums;
if (len < k)
{
k %= len;
}
if (nums.size() == 1 || nums.size() == 0 || k == 0
)
{
return;
}
stack<int> s1;
for (int i = 0; i < k; i++)
{
s1.push(n[len - i - 1]);
}
for (int i = 0; i < k; i++)
{
nums[i] = s1.top();
s1.pop();
}
for (int i = len - k - 1; i >= 0; i--)
{
s1.push(n[i]);
}
for (int i = k; i < len; i++)
{
nums[i] = s1.top();
s1.pop();
}
}
};