您的位置:首页 > 其它

189. Rotate Array

2016-03-27 22:24 316 查看
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.

Related problem: Reverse Words in a String II

解答

三次翻转

第一次将整个数组反转,第二次将前k个元素翻转,第三次将剩下的元素翻转。

class Solution {
public:
void rotate(vector<int>& nums, int k) {
if(nums.empty())
return;
int n = nums.size();
if(k == n)
return;
if(k>n)
k = k%n;
reverse(nums.begin(),nums.end());
vector<int>::iterator rotatePoint = nums.begin()+k;
reverse(nums.begin(),rotatePoint);
reverse(rotatePoint,nums.end());

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: