码迷,mamicode.com
首页 > 编程语言 > 详细

leetcode(2) 数组元素右移

时间:2015-05-07 10:22:17      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

描述:数组元素个数为n,右移k位,如12345,右移3位后是34512

解答思路:将12345全旋转得到54321

     将前3位旋转34521

     将后两位旋转34512

处理核心是旋转reverse(vector<int> &nums,int begin,int end)

旋转分隔点是k=k%n  (k是移动位数,n是数组长度)

class Solution {
public:
    void reverse(vector<int>& num,int begin,int end){
        int t=begin+(end-begin)/2;
        int tmp=0;
        int i=0;
        while(begin<=t){
            tmp=num.at(begin);
            num.at(begin)=num.at(end-i);
            num.at(end-i)=tmp;
            begin++;
            i++;
        }
    }
    void rotate(vector<int>& nums, int k) {
        int n=nums.size();
            k=k%n;
        if(n==2 && k==1 ){
            int tmp=0;
            tmp=nums.at(0);
            nums.at(0)=nums.at(1);
            nums.at(1)=tmp;
           
        }else if(k==n ||k==0){
           
        }else if(k<n){
            reverse(nums,0,n-1);
            reverse(nums,0,k-1);
            reverse(nums,k,n-1);
        }
    }
};

leetcode(2) 数组元素右移

标签:

原文地址:http://www.cnblogs.com/wygyxrssxz/p/4483897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!