我是靠谱客的博主 清秀乐曲,这篇文章主要介绍LC189. 轮转数组,现在分享给大家,希望可以做个参考。

题目

给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
提示:

1 <= nums.length <= 10^5
-2^31 <= nums[i] <= 2^31 - 1
0 <= k <= 10^5

思路

类似于字符串反转的题目
步骤:

  1. 将反转数k对数组长度len取余,避免一些重复旋转
  2. 将最后k个数之前的先反转一次
  3. 将最后k个数反转一次
  4. 将数组反转一次

代码

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int len = nums.size();
        k%=len;
        reverse(nums.begin(), nums.begin()+len-k);
        reverse(nums.begin()+len-k, nums.end());
        reverse(nums.begin(), nums.end());
    }
};

最后

以上就是清秀乐曲最近收集整理的关于LC189. 轮转数组的全部内容,更多相关LC189.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(127)

评论列表共有 0 条评论

立即
投稿
返回
顶部