当前位置: 首页 > news >正文

LeetCode 189. 轮转数组:三次反转实现 O(1) 原地轮转

题目说明

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置。题目要求原地修改数组。

例如:

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

思路:把右移拆成三次反转

数组长度记为 n。向右轮转 k 位后,原数组可以分为两段:

  • 前半段:nums[0:n-k]
  • 后半段:nums[n-k:n]

目标是把后半段移到前面,同时保持两段内部的相对顺序。可以依次执行:

  1. 反转整个数组;
  2. 反转前 k 个元素;
  3. 反转剩余 n-k 个元素。

[1,2,3,4,5,6,7]k = 3 为例:

原数组:       [1,2,3,4,5,6,7]
整体反转:     [7,6,5,4,3,2,1]
反转前 3 项:  [5,6,7,4,3,2,1]
反转剩余部分: [5,6,7,1,2,3,4]

注意先执行 k %= n。当 k 大于数组长度时,整轮移动不会改变数组,真正有效的位数只有余数部分。

Python 代码

class Solution:def rotate(self, nums: list[int], k: int) -> None:n = len(nums)k %= ndef reverse(left: int, right: int) -> None:while left < right:nums[left], nums[right] = nums[right], nums[left]left += 1right -= 1reverse(0, n - 1)reverse(0, k - 1)reverse(k, n - 1)

正确性说明

整体反转后,原数组末尾的 k 个元素被放到数组前面,但它们的顺序被反转;原数组前面的 n-k 个元素被放到后面,顺序同样被反转。再分别反转这两段,就能恢复各段内部原有顺序,因此最终结果恰好是向右轮转 k 位后的数组。

复杂度分析

  • 时间复杂度:O(n)。三个反转操作总共处理线性数量的元素。
  • 空间复杂度:O(1)。只使用常数个变量,符合原地修改要求。

易错点

  1. 忘记执行 k %= n,导致 k > n 时下标错误。
  2. 三次反转的区间写错。正确区间依次是 [0, n-1][0, k-1][k, n-1]
  3. 题目要求原地修改,不需要返回新数组。
  4. k = 0 时,前两个反转会相互抵消,结果仍然正确。

面试表达

可以先说明使用额外数组能够直接完成,但空间复杂度为 O(n);随后给出三次反转,将额外空间优化到 O(1)。重点解释“整体反转改变两段位置,局部反转恢复段内顺序”。

http://www.jsqmd.com/news/1330032/

相关文章:

  • 2026年舟山起重钢丝绳优质厂家选择标准实用指南 - 热点品牌推荐
  • 用水流类比理解电路:电压、电流、电阻的直观模型
  • 195、TinyML实战项目:智能水产养殖与监测
  • 恒压供水系统:变频控制与PLC应用详解
  • 大麦助手抢票系统深度解析:高性能自动化引擎架构设计
  • 什么是无痕密文代发?抖店合规代发模式讲解 - 电商分享
  • Unity特效性能优化实战:ParticleEffectProfiler深度解析与性能瓶颈定位
  • 从零构建生产级AI集成服务:Python实战大模型API工程化封装
  • Unity开发中Rider调试器与VCS冲突导致Reload Domain卡死的诊断与解决
  • 2026 年新发布:宜兰评价高的防腐木栈道施工厂家哪家强,想省一半钱还不踩坑?这玩意儿竟比老办法靠谱十倍! - 行业严选官
  • 2026 年现阶段洋县有实力的球场护栏网制造厂推荐几家,差点让小区球场变“笼中场”的,竟是你每天都忽略的这玩意儿? - 企业推荐官【认证】
  • Premiere Pro界面解析与高效剪辑技巧
  • Linux内核工作队列机制详解:从INIT_WORK到中断下半部处理
  • 四川泄爆门窗批发商选购参考 工程类项目合作实用指南 - 热点品牌推荐
  • Winform图片资源管理:从嵌入加载到性能优化的完整指南
  • AMD Instella-MoE-16B-A3B:完全开源MoE大模型部署与优化实战指南
  • MetaGPT | 第四章:架构设计
  • 正则表达式——匹配单个字符
  • 抖音小店出单有提醒吗?开启下单提醒方法 - 电商分享
  • SCADA系统架构解析:从数据采集到工业互联网的核心枢纽
  • 一件代发怎么做密文发货?密文下单完整流程 - 电商分享
  • STM32 HAL库延时与计时全解析:从阻塞延时到非阻塞调度
  • 2026 年更新:辽宁评价高的膜结构车棚制造厂家推荐几家,为什么小区楼下那片防晒又省钱的棚子,比普通车棚好用这么多?-飞扬膜结构车棚 - 行业鉴选官
  • 云南如何挑选性价比高的喷砂机喷砂房制造厂 - 热点品牌推荐
  • 2026年常熟市住宅防水修缮口碑评价与**案例白皮书 - 速达同城防水
  • 华为eNSP防火墙Web管理实战:Cloud桥接与安全策略配置
  • LeetCode 238. 除自身以外数组的乘积:前缀积与后缀积
  • Godot游戏开发调试与性能优化全攻略:从工具使用到底层原理
  • 正则表达式——匹配一组字符
  • 基于DeepSeek构建AI Agent:从ReAct模式到LangGraph工程化实践