码迷,mamicode.com
首页 > 其他好文 > 详细

Rotate Array

时间:2015-03-05 16:13:38      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

将一个长度为n的数组循环右移k次

注意点:

  • k有可能大于n,需要取余。
  • 需要考虑空间开销,存在空间开销为O(1)的解法
  • 需要考虑时间开销

比较巧妙的方法是利用STL内置的reverse函数,做三次即可。
举个例子:array[7]={1,2,3,4,5,6,7},n=3

  1. 7,6,5,4,3,2,1
  2. 5,6,7,4,3,2,1
  3. 5,6,7,1,2,3,4

代码实现比较简单:

  1. class Solution {
  2. public:
  3. void rotate(int nums[], int n, int k) {
  4. k = k%n;
  5. reverse(nums, nums + n);
  6. reverse(nums, nums + k);
  7. reverse(nums + k, nums + n);
  8. }
  9. };




Rotate Array

标签:

原文地址:http://www.cnblogs.com/flyjameschen/p/4315792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!