当前位置: 首页 > 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)

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

http://www.lryc.cn/news/574430.html

相关文章:

  • 华为云 Flexus+DeepSeek 征文|文案魔盒・Emoji 菌:基于华为云 CCE 集群 Dify 大模型,创意文案智能生成助手
  • 数组题解——​最大子数组和​【LeetCode】(更新版)
  • 黑马程序员苍穹外卖DAY1
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • C指针总结复习(结合deepseek)
  • 深入浅出Node.js后端开发
  • 【TCL 脚本学习 4 -- tcl 脚本 数组定义和使用】
  • 触摸屏(典型 I2C + Input 子系统设备)从设备树解析到触摸事件上报
  • Redis哨兵模式深度解析与实战部署
  • 用 GitHub Issues 做任务管理和任务 List,简单好用!
  • 【图像】ubuntu中图像处理
  • Redis精简总结|一主二从哨兵模式(工作机制)|集群模式|缓存的穿透雪崩击穿
  • NFS服务配置超详细版
  • 第一节 布局与盒模型-Flex与Grid布局对比
  • 考研408《计算机组成原理》复习笔记,第三章(2)——存储器的ROM、RAM(DRAM和SRAM)、磁盘硬盘
  • 鸿蒙容器组件 Row 全解析:水平布局技术与多端适配指南
  • 实现 “WebView2 获取word选中内容
  • Python-1-环境
  • SQLite3 在嵌入式系统中的应用指南
  • 华为云 Flexus+DeepSeek 征文|CCE 集群部署 Dify 平台:【工作流协同高质量知识库】搭建企业级教培行业 Agent 顾问
  • C3新增特性
  • springcloud/springmvc协调作用传递验证信息
  • 如何实现财务自由
  • qt常用控件--02
  • AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法(一)
  • 功率器件的基本公式概念
  • React Native【实用教程】(含图标方案,常用第三库,动画,内置组件,内置Hooks,内置API,自定义组件,创建项目等)
  • 【机器学习1】线性回归与逻辑回归
  • iperf3使用方法
  • 实验九:RIPv2协议配置与分析