[力扣 Hot100]Day15 轮转数组

题目描述

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
出处

思路

好像是某一年的考研题,原地逆序后k项,再逆序前n-k项,再逆序整个数组即可。空间复杂度O(1),时间复杂度O(n)。要注意k可能比n大,需要对n取余。

代码

cpp 复制代码
class Solution {
private:
    void reverse(vector<int>& nums, int left, int right){
        int t;
        while (left<right)
        {
            t=nums[left];
            nums[left]=nums[right];
            nums[right]=t;
            left++;right--;
        }
        
    }
public:
    void rotate(vector<int>& nums, int k) {
        int n=nums.size();
        k=k%nums.size();
        if(k==n)return;
        reverse(nums, n-k, n-1);
        reverse(nums, 0, n-k-1);
        reverse(nums, 0, n-1);
    }
};
相关推荐
虾球xz3 分钟前
游戏引擎学习第299天:改进排序键 第二部分
c++·学习·算法·游戏引擎
IC 见路不走10 分钟前
LeetCode 第61题:旋转链表
算法·leetcode·链表
阿方.91822 分钟前
《C 语言 sizeof 与 strlen 深度对比:原理、差异与实战陷阱》
算法
制冷男孩30 分钟前
机器学习算法-聚类K-Means
算法·机器学习·聚类
im_AMBER1 小时前
Leetcode 01 java
java·学习·leetcode
2401_878624791 小时前
机器学习 KNN算法
人工智能·算法·机器学习
Cachel wood1 小时前
算法与数据结构:质数、互质判定和裴蜀定理
数据结构·算法·microsoft·机器学习·数据挖掘·langchain
李长渊哦1 小时前
双指针法高效解决「移除元素」问题
数据结构·算法
ai.Neo1 小时前
牛客网NC209794:使徒袭来
c++·算法·数学建模
JCBP_2 小时前
C++(3)
开发语言·c++·算法