zoukankan      html  css  js  c++  java
  • 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.

    思路:想出尽可能多的方法,这里先写一种,以后再想其他的。

    方法1:时间复杂度O(n),空间复杂度O(n - k % n)。

     1 class Solution {
     2 public:
     3     void rotate(vector<int>& nums, int k) {
     4         vector<int> tem;
     5         int n = nums.size();
     6         k %= n;
     7         for (int i = 0; i < n - k; i++)
     8             tem.push_back(nums[i]);
     9         for (int i = n - k; i < n; i++)
    10             nums[i - n + k] = nums[i];
    11         for (int i = k; i < n; i++)
    12             nums[i] = tem[i - k];
    13     }
    14 };

     方法2:将前n-k个数反转,将后k个数反转,将所有数反转。时间复杂度O(n),空间复杂度O(1).

     1 class Solution {
     2 public:
     3     void rotate(vector<int>& nums, int k) {
     4         int n = nums.size();
     5         k = k % n;
     6         reverse(nums.begin(), nums.begin() + n - k);
     7         reverse(nums.begin() + n - k, nums.begin() + n);
     8         reverse(nums.begin(), nums.begin() + n);
     9     }
    10 };
  • 相关阅读:
    正则化--Lambda
    uwsgi配置cheaper模式进行自动弹性
    采集容器内存并写到excel
    通过进程id找到进程对应的容器并统计每个进程的内存占用写到excel里
    基于celery的任务管理
    基于Redis做内存管理
    uWSGI
    nginx
    服务发现
    绑核与巨页
  • 原文地址:https://www.cnblogs.com/fenshen371/p/4910171.html
Copyright © 2011-2022 走看看