0
点赞
收藏
分享

微信扫一扫

ios搭建OpenGL环境

书呆鱼 2024-02-02 阅读 26

题目描述:

题解方法:

方法一:

//  核心代码 即遍历并复制元素到新的数组中
 for(int i = 0; i <n; ++i){
        arr[(i+k)%n] = nums[i];
    }

力扣运行完整代码:

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
    int n = nums.size();
    vector<int> arr(n);
    for(int i = 0; i <n; ++i){
        arr[(i+k)%n] = nums[i];
    }
    nums.assign(arr.begin(), arr.end());
    }
};

执行用时:

方法二:

class Solution {
public:
    void  reverse(vector<int>& nums, int start, int end){
         while(start < end){
       //通过调用交换函数,实现数组中的前后两两元素交换。
       swap(nums[start], nums[end]);
       start +=1;  //start从数组前面开始遍历
       end -=1; //end从数组后面开始遍历
   }
    }
    
    void rotate(vector<int>& nums, int k) {
        k %= nums.size();
        reverse(nums,0,nums.size()-1);
        reverse(nums, 0 ,k -1);
        reverse(nums,k , nums.size()-1);
    }
};

执行用时: 

总结:

   解题方法不唯一。本题可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?欢迎评论区留言哦

举报

相关推荐

0 条评论