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. 反思

  • 相关阅读:
    Problem C: 类的初体验(V)
    接口与继承
    类和对象
    java函数方法
    数组
    string类的一些函数方法
    java语法基础
    大道至简——做个懒人
    java编程 求和
    编程的精义
  • 原文地址:https://www.cnblogs.com/whl2012/p/5860717.html
Copyright © 2011-2022 走看看