zoukankan      html  css  js  c++  java
  • 189. Rotate Array

    1. 问题描述

    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.
    Hint:
    Could you do it in-place with O(1) extra space?
    Related problem: Reverse Words in a String II
    Tags: Array
    Similar Problems: (M) Rotate List (M) Reverse Words in a String II

    2. 解题思路


    3. 代码

    #include <algorithm>
    class Solution {
    public:
        void rotate_1(vector<int>& nums, int k) 
        {
            int vSize = nums.size();
            k = k % vSize;
            for (int i=0; i<vSize/2; i++)
            {
                int t = nums[i];
                nums[i] = nums[vSize-1-i];
                nums[vSize-1-i] = t;
            }
    
            for (int i=0; i<k/2; i++)
            {
                int t = nums[i];
                nums[i] = nums[k-1-i];
                nums[k-1-i] = t;
            }
    
            for (int i=k; i<k + (vSize-k)/2; i++)
            {
                int t = nums[i];
                nums[i] = nums[vSize-1-i+k];
                nums[vSize-1-i+k] = t;
            }
        }
    
        void rotate_2(vector<int>& nums, int k)//使用reverse()函数需引入#include <algorithm>
        {
            k = k % nums.size();
            reverse(nums.begin(), nums.end());
            reverse(nums.begin(), nums.begin()+k);
            reverse(nums.begin()+k, nums.end());
        }
    };


    4. 反思

  • 相关阅读:
    python之路——进程
    python之路——操作系统的发展史
    python之路——网络编程
    模块学习之re模块
    day11迭代器、生成器
    day10闭包、函数装饰器
    vnc安装和配置
    单例模式
    代理设计模式
    工厂模式例子
  • 原文地址:https://www.cnblogs.com/whl2012/p/5860717.html
Copyright © 2011-2022 走看看