zoukankan      html  css  js  c++  java
  • 189.旋转数组

    给定一个数组,将数组中的元素向右移动 个位置,其中 是非负数。

    示例 1:

    输入: [1,2,3,4,5,6,7]k = 3
    输出: [5,6,7,1,2,3,4]
    解释:
    向右旋转 1 步: [7,1,2,3,4,5,6]
    向右旋转 2 步: [6,7,1,2,3,4,5]
    向右旋转 3 步: [5,6,7,1,2,3,4]
    

    第一个方法:152 ms

    void rotate(vector<int>& nums, int k) {
            int size = nums.size();
            int index = 0;
            k = k % size;
            int temp = 0;
            for(int i=size-k ; i<size ; ++i, ++index)
            {
                temp = nums[i];
                for(int j=index + size - k ; j > index ; --j)
                {
                    nums[j] = nums[j-1];
                }
                nums[index] = temp;
            }
        }

    采用库函数:

    tmp = nums.back();
    nums.pop_back();
    nums.insert(nums.begin(), tmp);

    大神方法:

    对两边分别做倒转,最后再对所有倒转。

    void rotate(vector<int>& nums, int k) 
        {
            if (nums.size() == 0) {
                return;
            }
            
            k = k % nums.size();
            reverse(nums, 0, nums.size() - k - 1);
            reverse(nums, nums.size() - k, nums.size() - 1);
            reverse(nums, 0, nums.size() - 1);   
        }
        
    void reverse(vector<int>& nums, int start, int end) {
            while (start < end) {
                int temp = nums[start];
                nums[start] = nums[end];
                nums[end] = temp;
                ++start; 
                --end;
            }
        }
            

    也可以先对整个倒转,再对两边倒转

    void rotate(vector<int>& nums, int k) {
            k = k % nums.size();
            reverse(nums, 0, nums.size() - 1);
             reverse(nums, 0, k - 1);
            reverse(nums, k, nums.size() - 1);
        }
  • 相关阅读:
    2
    1
    Hadoop集群常见报错汇总
    Kerberos常见报错汇总
    Python软件包管理工具pip实战篇
    Python软件包及环境管理器conda实战篇
    Python的Virtualenv与Venv环境管理器
    Python的编辑工具-Jupyter notebook实战案例
    文档工具GitBook使用指南
    20200912
  • 原文地址:https://www.cnblogs.com/jimobuwu/p/8982186.html
Copyright © 2011-2022 走看看