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

     

    Solution 1: note that line 6 uses k%size. the time complexity of erase is O(n), so the worst total time could be O(n^2)

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

    Solution 2:reverse the previous n-k nums and then reverse the later k nums. Finally reverse all. O(n)

    1 2 3 4 5 6 7 

    4321567

    4 3 2 1 7 6 5

    5 6 7 1 2 3 4

     1 class Solution {
     2 public:
     3     void rotate(vector<int>& nums, int k) {
     4         if (nums.empty() || (k %= nums.size()) == 0) return;
     5         int n = nums.size();
     6         reverse(nums.begin(), nums.begin() + n - k);
     7         reverse(nums.begin() + n - k, nums.end());
     8         reverse(nums.begin(), nums.end());
     9     }
    10 };
  • 相关阅读:
    今天的温度还是有点高.....
    [React] 点击---图片90&#176;旋转
    javascript onclick事件可以调用两个方法吗?
    vue 页面回退mounted函数不执行的问题及解决方法
    vue static和assets的区别
    js实现复制|剪切指定内容到粘贴板--clipboard
    纯前端html导出pdf--分页+不分页--html2canvas+jsPDF
    git常用命令行
    浅谈“观察者模式”那点小事儿
    [Linq] ORM
  • 原文地址:https://www.cnblogs.com/anghostcici/p/6917120.html
Copyright © 2011-2022 走看看