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

数组题解——​轮转数组【LeetCode】

189. 轮转数组

通过三次反转操作,可以实现数组的轮转:

  1. 反转整个数组: 将数组完全反转,使得原数组的后 k 个元素移动到数组的前面。
  2. 反转前 k 个元素: 将前 k 个元素反转,恢复它们的原始顺序。
  3. 反转后 n - k 个元素: 将后 n - k 个元素反转,恢复它们的原始顺序。

最终,数组 nums 被向右轮转了 k 个位置。

  • 时间复杂度: O(n),因为反转操作的时间复杂度为 O(n)。
  • 空间复杂度: O(1),没有使用额外的空间。
class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""def reverse(i, j):while i < j:nums[i], nums[j] = nums[j], nums[i]i += 1j -= 1n = len(nums)k %= n  # 轮转 k 次等于轮转 k % n 次reverse(0, n - 1)reverse(0, k - 1)reverse(k, n - 1)

反思:树立数组的思想,看到数组元素的,将他们想成一个整体来看,不要只想着他们是一个一个元素

相关文章:

  • [HTML]iframe显示pdf,隐藏左侧分页
  • 线程池 JMM 内存模型
  • 【题解-Acwing】1022. 宠物小精灵之收服
  • docker镜像中集成act工具
  • 非对称加密实战:Python实现数字签名
  • 【AI论文】扩展大型语言模型(LLM)智能体在测试时的计算量
  • Java+Vue开发的SRM招标采购管理系统,实现招标采购全流程数字化、规范化高效管理
  • MySQL与Excel比较
  • 协议转换赋能光伏制造:DeviceNET转PROFINET网关的通信质检实践
  • 2d-gaussian-splatting:论文分析、全流程环境配置与数据集测试【2025最新版!!!】
  • AntDesignPro动态路由配置全攻略
  • AES算法的Verilog流水线实现(带测试)
  • 【机器人-深度估计】双目深度估计原理解析
  • 汽车制造领域:EtherCAT转Profinet网关案例全面解析
  • Redis精简总结|一主二从哨兵模式(工作机制)|集群模式|缓存的穿透雪崩击穿
  • day040-搭建lnmp服务与数据库迁移
  • C#串口通讯实战指南
  • JavaScript操作DOM对象
  • solidity+Remix本地化部署和安装教程
  • MATLAB GUI界面设计 第三章——仪器组件