面试经典 150 题

文章目录

6、轮转数组

1、描述

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

示例 1:

输入: nums = 1,2,3,4,5,6,7, k = 3

输出: 5,6,7,1,2,3,4

解释:

向右轮转 1 步: 7,1,2,3,4,5,6

向右轮转 2 步: 6,7,1,2,3,4,5

向右轮转 3 步: 5,6,7,1,2,3,4
2、关键字

数组向后轮转变换
3、思路

先用k对n取模

思路一:使用辅助数组,时间复杂度O(N),空间复杂度O(N)

思路二:发现规律:先把整个数组逆置,之后把前k个元素逆置,之后把后边n- k个元素逆置
4、notes

多练
6、code

cpp 复制代码
class Solution {
public:
   void reverse(vector<int>& nums, int i, int j) {
        while(i < j) {
            int tem = nums[i];
            nums[i] = nums[j];
            nums[j] = tem;     
            i++;
            j--;
        }
   }
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        k %= n ;
        reverse(nums, 0, n - 1); // 整个数组逆置
        reverse(nums, 0,  k - 1); // 逆置前边的k个,
        reverse(nums, k, n - 1); // 逆置后边的n - k个
    }
};
相关推荐
shehuiyuelaiyuehao7 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
智购科技自动售货机厂家7 小时前
2026自动售货机设备清洁效果自动验证:从图像比对到评分算法的工程实践~YH
人工智能·算法·计算机视觉
姜穆澜7 小时前
机器学习实战指南:从算法原理到工程落地
人工智能·算法·机器学习
啵啵啵鱼8 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
Q一件事8 小时前
RWEQ——保留与消去P的soil_loss联合推导
算法
HugoStudio_SWAN9 小时前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
那年窗外下的雪.9 小时前
AIDC 学习日志|第 20 天|多归属业务验收与哈希不均定位
学习·算法·哈希算法
YSL0701249 小时前
时间复杂度和空间复杂度
数据结构
洋不写bug9 小时前
链表面试笔试经典题目详细解析,题目多解法,复杂度分析
数据结构·链表·面试