LeetCode 189 轮转数组|3种解法拆解,从暴力到O(1)原地最优解
文章前言今天拆解 LeetCode Hot100 经典数组题189. 轮转数组题目要求将数组整体向右轮转 k 个位置不仅可以练习数组基础操作还能掌握「原地数组翻转」经典算法技巧面试高频原题。本文依次讲解暴力移位、临时数组、三次数组翻转三种实现方案对比时间、空间复杂度带你吃透最优原地解法。一、题目原题题目描述给定一个整数数组 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输入nums [-1,-100,3,99], k 2输出[3,99,-1,-100]进阶要求1.尽可能想出更多的解决方案至少有三种不同的方法可以解决这个问题。2.你可以使用空间复杂度为 O(1) 的原地算法解决这个问题吗前置小知识点当k 数组长度时旋转整数组长度次数等于数组还原因此统一处理k k % nums.length去除无效旋转。二、解法一暴力循环移位直观易懂大数据量超时思路循环 k 次每一轮只将数组最后一位元素取出整体数组向后挪一位最后把末尾元素放到数组头部。Java 代码实现classSolution{publicvoidrotate(int[]nums,intk){intnnums.length;kk%n;// 循环k次每次右移1位for(inti0;ik;i){// 保存最后一个元素intlastnums[n-1];// 数组整体后移一位for(intjn-1;j0;j--){nums[j]nums[j-1];}// 头部赋值nums[0]last;}}}复杂度分析•时间复杂度O(n×k)数组长度 n循环 k 次移位数组很长时直接超时•空间复杂度O(1)仅使用临时变量存储末尾值优缺点优点逻辑直白新手容易理解轮转逻辑缺点效率极低力扣大数据用例直接超时工程基本不用。三、解法二临时数组辅助空间换时间刷题快速过题思路新建一个等长临时数组通过公式temp[(i k) % n] nums[i]计算每个元素旋转后的下标全部存入临时数组最后使用System.arraycopy将临时数组完整覆盖到原数组。Java 代码实现classSolution{publicvoidrotate(int[]nums,intk){intnnums.length;kk%n;int[]tempnewint[n];// 填充临时数组for(inti0;in;i){temp[(ik)%n]nums[i];}// 将临时数组全部复制覆盖原数组System.arraycopy(temp,0,nums,0,n);}}关键知识点System.arraycopy 数组覆盖System.arraycopy(源数组, 源起始索引, 目标数组, 目标起始索引, 复制长度)是 Java 底层原生数组拷贝方法性能优于 for 循环赋值可以直接原地修改原数组内容适配本题void无返回值要求。复杂度分析•时间复杂度O(n)仅一次遍历数组•空间复杂度O(n)额外开辟一个数组空间优缺点优点代码简洁、一次遍历完成通过率稳定缺点不符合进阶原地算法要求额外占用内存。四、解法三三次数组翻转原地最优解面试核心考点核心原理无需额外数组依靠自定义区间反转函数完成轮转三步走样例[1,2,3,4,5,6,7],k3演示整体数组反转[7,6,5,4,3,2,1]反转前 k 个元素[5,6,7,4,3,2,1]反转后半段剩余元素[5,6,7,1,2,3,4]自定义 reverse 反转工具方法双指针实现区间原地反转输入数组 左右边界直接修改数组内容Java 代码实现反转函数代码// 闭区间[left,right]数组反转privatevoidreverse(int[]nums,intleft,intright){while(leftright){inttempnums[left];nums[left]nums[right];nums[right]temp;left;right--;}}完整代码classSolution{publicvoidrotate(int[]nums,intk){intlennums.length;kk%len;reverse(nums,0,len-1);// 整体反转reverse(nums,0,k-1);// 前k位反转reverse(nums,k,len-1);// 后半段反转}// 区间反转工具函数privatevoidreverse(int[]nums,intleft,intright){while(leftright){inttempnums[left];nums[left]nums[right];nums[right]temp;left;right--;}}}复杂度分析•时间复杂度O(n)数组每个元素仅被交换 2 次•空间复杂度O(1)仅临时交换变量纯原地操作优缺点优点完美满足进阶 O (1 空间要求面试标准答案反转函数是数组通用工具可以复用在大量算法题缺点需要理解反转逻辑新手需要画图辅助理解。五、三种方案横向对比表六、核心总结1.数组旋转预处理必做k k % nums.length规避超大 k 值无效运算2.System.arraycopy是数组覆盖赋值高效 API注意区分数组直接赋值只是修改引用无法修改原数组内容3.双指针reverse区间反转是数组高频工具函数必须熟练手写4.面试遇到数组旋转类题目直接给出三次反转原地解法是最优解题答案。

相关新闻

【Bug已解决】`accelerate.load_checkpoint_and_dispatch` does not load GPT-OSS Models correctly 解决方案

【Bug已解决】`accelerate.load_checkpoint_and_dispatch` does not load GPT-OSS Models correctly 解决方案

【Bug已解决】accelerate.load_checkpoint_and_dispatch does not load GPT-OSS Models correctly 解决方案 一、现象长什么样 用 accelerate 的 load_checkpoint_and_dispatch 加载 GPT-OSS 系列模型(带 device_map 做多卡 / offload 分发),…

2026/8/4 9:38:18 阅读更多 →
PADS 9.5在Win10/Win11界面显示不全的终极修复方案与原理剖析

PADS 9.5在Win10/Win11界面显示不全的终极修复方案与原理剖析

1. 项目概述:一个老牌EDA工具的“现代化”烦恼如果你是一位还在使用PADS 9.5进行电路设计的硬件工程师,尤其是在Windows 10或更高版本的系统上,那么你大概率遇到过这两个让人抓狂的界面问题:在PADS Logic中,当你点击“…

2026/8/4 9:38:23 阅读更多 →
西安交大张鸿教授模拟CMOS集成电路设计课程:对标Razavi教材的系统学习指南

西安交大张鸿教授模拟CMOS集成电路设计课程:对标Razavi教材的系统学习指南

这次我们来看一套来自西安交通大学张鸿教授的《集成电路设计》课程资源,它系统性地讲解了模拟CMOS集成电路设计的核心知识,并与业界经典教材《Design of Analog CMOS Integrated Circuits》(Razavi著)的前10章内容对应。对于正在学…

2026/8/4 9:38:27 阅读更多 →

最新新闻

基于BiLSTM-Attention的轴承剩余寿命预测:MATLAB实践指南

基于BiLSTM-Attention的轴承剩余寿命预测:MATLAB实践指南

在实际工业预测性维护场景中,轴承作为旋转机械的核心部件,其剩余使用寿命(RUL)的准确预测是避免非计划停机、降低维护成本的关键。传统的基于物理模型或简单统计的方法往往难以捕捉复杂工况下轴承性能退化的非线性动态特征。近年来…

2026/8/4 9:38:37 阅读更多 →
决策树与决策森林新手实战指南

决策树与决策森林新手实战指南

在处理分类或回归问题时,我们常常面临一个两难选择:是追求模型的简单可解释性,还是牺牲一部分透明度来换取更高的预测精度?传统的线性模型虽然直观,但在面对非线性关系复杂的数据时往往力不从心;而深度神经…

2026/8/4 9:38:37 阅读更多 →
3个为什么选择Seraphine的理由:告别手动查询的智能游戏助手

3个为什么选择Seraphine的理由:告别手动查询的智能游戏助手

3个为什么选择Seraphine的理由:告别手动查询的智能游戏助手 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾经在英雄联盟游戏中,因为无法快速了解队友和对手的实力而错失BP优势…

2026/8/4 9:38:37 阅读更多 →
基于SpringBoot的高校班费管理系统设计与实现

基于SpringBoot的高校班费管理系统设计与实现

1. 项目概述 高校班级财务管理一直是学生自治工作中的痛点。传统纸质记账本容易丢失、Excel表格难以共享、微信群接龙统计混乱...这些问题在班费管理场景中屡见不鲜。我开发的这套基于SpringBoot的班费管理系统,正是为了解决这些实际问题而生。 这个系统本质上是一…

2026/8/4 9:38:37 阅读更多 →
SpringBoot与微信小程序构建智慧校园选课系统

SpringBoot与微信小程序构建智慧校园选课系统

1. 项目概述:基于SpringBoot与微信小程序的智慧校园选课系统 这个项目本质上是一个打通校园教务系统与学生移动端的桥梁。我们团队用SpringBoot构建后端服务,配合微信小程序前端,实现了学生随时随地进行课程查询、选课、退课等操作。相比传统…

2026/8/4 9:38:37 阅读更多 →
数字孪生智慧电力哪个厂商做得比较好?采购选型需要重点关注哪些能力?

数字孪生智慧电力哪个厂商做得比较好?采购选型需要重点关注哪些能力?

在新型电力系统和新型能源体系建设持续推进的背景下,数字孪生正逐渐从单一的三维展示工具,演变为支撑智慧电厂、智慧变电站、新能源场站以及电网数字化运行的重要基础平台。近年来,随着人工智能、空间计算、视频智能分析等技术不断成熟&#…

2026/8/4 9:37:37 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →