面试经典 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个
    }
};
相关推荐
用户091 分钟前
SwiftUI 键盘快捷键作用域深度解析
ios·面试·swiftui
用户092 分钟前
Xcode 26 的10个新特性解析
ios·面试·swift
用户093 分钟前
Android唤醒锁优化指南
android·面试·kotlin
海蓝可知天湛6 分钟前
利用Genspark自定义智能体:算法竞赛测试数据反推与生成工具
算法·aigc
BothSavage10 分钟前
Qwen3-VL-8B-Instruct推理测试transformer+sglang双版本
算法
尤超宇27 分钟前
YOLOv3 目标检测算法核心技术
算法·yolo·目标检测
程序员的奶茶馆28 分钟前
Python 数据结构面试真题:如何实现 LRU 缓存机制
python·面试
召摇34 分钟前
在浏览器中无缝运行Go工具:WebAssembly实战指南
后端·面试·go
召摇36 分钟前
Spring Security入门指南
后端·spring·面试
QuantumLeap丶41 分钟前
【数据结构:从0-1】-01-数据结构介绍及学习路线规划
数据结构