专栏首页算法修养LeetCode 189. Rotate Array

LeetCode 189. Rotate Array

题目

题意:将一个数组旋转k位,

用O(1)空间的算法去解决。找到nums[x]旋转之后对应的位置,交换二者,然后得到的数字再找下去。知道找到一开始的数字,形成一个闭环了,然后x++,直到交换次数==nums.size

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int len = nums.size();
        
        k = k % len;
        
        int x;
        int y;
        int start=0;
        int pos=0;
        x=nums[pos];
        int num=0;
        while(1)
        {
            y = nums[(pos+k)%len];
            nums[(pos+k)%len] = x;
            x = y;
            pos = (pos+k)%len;
            
            num++;
            
            if(pos==start && num!=nums.size())
            {
                pos = start+1;
                start = pos;
                x = nums[pos];
                continue;
            }
            
            if(num==nums.size())
                break;
        }
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 307. Range Sum Query - Mutable

    ShenduCC
  • LeetCode 283. Move Zeroes ( easy )

    题意:把一个数组里的所有0放到数组末尾,数组里其他数字的顺序不要变 题解: 可以利用冒泡的思想,写一个O(n^2)的方法。

    ShenduCC
  • LeetCode 76. Minimum Window Substring

    把第一个字符串中的在第二个字符串中出现的字符都标记出来,找到第一个符合条件的区间。也就是第一个窗口。

    ShenduCC
  • LeetCode 307. Range Sum Query - Mutable

    ShenduCC
  • LeetCode 76. Minimum Window Substring

    把第一个字符串中的在第二个字符串中出现的字符都标记出来,找到第一个符合条件的区间。也就是第一个窗口。

    ShenduCC
  • BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MB Submit: 103...

    Angel_Kitty
  • LeetCode - 两数之和

    开启新的一个篇章,LeetCode题解,个人的一些解题思路分享(可能有的题目就是这么菜,之后慢慢更,可以先把自己做完的100多题每天1题的方式先发出来,一遍更一...

    晓痴
  • LeetCode 每日一题169: 求众数

    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

    benny
  • 【专知-关关的刷题日记17】Leetcode 268. Missing Number

    题目 Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find...

    WZEARW
  • 51Nod-1249-近似有序区间

    ACM模版 描述 ? 题解 image.png 代码 #include <cstdio> #include <iostream> #define ls rt ...

    f_zyj

扫码关注云+社区

领取腾讯云代金券