首页 > 编程语言 > 详细

leetcode(2) 数组元素右移

时间:2015-05-07 10:21:14      阅读:203      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!