• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
189 轮转数组

image

 

class Solution {
public:

   // 通过1 time 0ms  100%  space 30.mb 5% 自己 内存大
    void rotate1(vector<int>& nums, int k) {
        //  1 余数 2 是否大于边界
        //  10  6 16=6 12-10=2

        cout<<"k "<<k<<endl;
        cout<<"nums.size() "<<nums.size()<<endl;
        vector<int> nums_new;
        
        k = k%nums.size();
        
        //int temp_last=nums.back();
        for(int i=0;i<nums.size();++i){
            int newi=0;

            if(i-k<0) newi=nums.size()+i-k;
            else newi=i-k;
            nums_new.push_back(nums[newi]);
        }
        nums = nums_new;
    
    }


       // 通过2 time 4ms 7.64% space 29mb 32% 自己 内存大
    void rotate2(vector<int>& nums, int k) {
        //  1 余数 2 是否大于边界
        //  10  6 16=6 12-10=2
        
        cout<<"k "<<k<<endl;
        cout<<"nums.size() "<<nums.size()<<endl;
        vector<int> nums_new;
        
        k = k%nums.size();
        if(k==0) return;
        
        vector<int> tempk;

        for(int i=0;i<k;i++){
            int new_i=i+k;
            if(new_i>=nums.size()) new_i=new_i-nums.size();
            tempk.push_back(nums[new_i]);
            nums[new_i]=nums[i];

        }
        
        for(int i=k;i<nums.size();i++){
            int new_i=i+k;
            if(new_i>=nums.size()) new_i=new_i-nums.size();
            swap(nums[new_i],tempk[i%k]);
        } 
    
    }

   // 官方0 ms    100%  28.3mb 87%  这是个纯取巧的活 
    void rotate(vector<int>& nums, int k) {
        auto reverse = [&](int i, int j) {
            while (i < j) {
                swap(nums[i++], nums[j--]);
            }
        };

        int n = nums.size();
        k %= n; // 轮转 k 次等于轮转 k % n 次
        reverse(0, n - 1);
        reverse(0, k - 1);
        reverse(k, n - 1);
    }


};

 

posted on 2025-10-16 05:02  MKT-porter  阅读(6)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3