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

    题目

    代码

    class Solution {
    public:
        void rotate(vector<int>& nums, int k) {
            if(nums.size()==0||nums.size()==1)
                return;
            if(k>nums.size())
            {
                k%=nums.size();
            }
             int movNum=nums.size()-k;
            swap(nums,0,movNum);
            swap(nums,movNum,nums.size());
            swap(nums,0,nums.size());
        }
        //将数组从[begin,end)进行逆转  (直接用reverse也可以)
        void swap(vector<int>&nums,int begin,int end)
        {
           for(int i=begin,j=end-1;i!=j&&i<=j;i++,j--)
           {
               int temp=nums[i];
               nums[i]=nums[j];
               nums[j]=temp;
           }
            
        }
    };

    思路

    比如[1,2,3,4,5]要右移2个位置,则把前面的3个元素逆转为[3,2,1,4,5],再逆转后面的2个元素[3,2,1,5,4],然后再整体逆转[4,5,1,2,3]。答案即求出。

    https://github.com/li-zheng-hao
  • 相关阅读:
    java 文件下载遇到的数个坑
    table标签 在谷歌和ie浏览器下不同的表现效果
    Java Day 19
    Java Day 18
    Java Day 17
    Java Day 16
    Java Day 15
    Java Day 14
    Java Day 13
    Java Day 12
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053654.html
Copyright © 2011-2022 走看看