我是靠谱客的博主 清秀乐曲,最近开发中收集的这篇文章主要介绍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. 轮转数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部