当前位置: 首页 > 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.xdnf.cn/news/1066537.html

相关文章:

  • K8S下http请求在ingress和nginx间无限循环的问题
  • Docker 永久换源步骤
  • 基于ASP4644多通道降压技术在电力监测系统中集成应用与发展前景
  • Maven 之 JUnit 测试体系构建全解析
  • 基于SpringBoot + Vue 的网上拍卖系统
  • leetcode543-二叉树的直径
  • 通信网络编程3.0——JAVA
  • Spring Cloud微服务
  • Java面试题027:一文深入了解数据库Redis(3)
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • Redis中的bigkey的介绍及影响
  • 安全再升级! 正也科技通过信息安全等级保护三级备案
  • 七八章习题测试
  • 高级版 Web Worker 封装(含 WorkerPool 调度池 + 超时控制)
  • 本地文件深度交互新玩法:Obsidian Copilot的深度开发
  • 能耗管理新革命:物联网实现能源高效利用
  • 小学期前端三件套学习(更新中)
  • 开启游戏新时代:神经网络渲染技术实现重大跨越
  • 【Torch】nn.GRU算法详解
  • 前端跨域解决方案(7):Node中间件
  • 容器技术入门与Docker环境部署指南
  • asp.net core Razor动态语言编程代替asp.net .aspx更高级吗?
  • 如何在 Vue 应用中嵌入 ONLYOFFICE 编辑器
  • LED-Merging: 无需训练的模型合并框架,兼顾LLM安全和性能!!
  • WebSocket长连接在小程序中的实践:消息推送与断线重连机制设计
  • 运维打铁: Windows 服务器基础运维要点解析
  • 详解HarmonyOS NEXT仓颉开发语言中的全局弹窗
  • AI编程再突破,文心快码发布行业首个多模态、多智能体协同AI IDE
  • vue3整合element-plus
  • WebSocket快速入门