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

【LeetCode Hot100】189.轮转数组-三种解法以及效果评估

题目描述

给定一个整数数组 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 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

提示:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105

不管轮转几步会发现,数组总是像是被分成了左右两份,有一个断点的感觉

方法一(针对原数组去找那个断点)

从原数组找到断点之后,从断点开始往后push进新数组
然后再从原数组第一位开始push进新数组

varrotate=function(nums,k){constlen=nums.length;k=k%len;constnewArr=[];for(leti=len-k;i<len;i++){newArr.push(nums[i])}for(leti=0;i<len-k;i++){newArr.push(nums[i])}for(leti=0;i<len;i++){nums[i]=newArr[i]}};

效果评估:

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

方法二(针对新数组去找那个断点)


原数组都是从第一位开始遍历,然后从新数组的断点位置开始push数据

varrotate=function(nums,k){constlen=nums.length;k=k%len;constnewArr=newArray(len);for(leti=0;i<len;i++){letidx=(i+k)%len;newArr[idx]=nums[i];}for(leti=0;i<len;i++){nums[i]=newArr[i];}};

效果评估:

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

方法三

https://leetcode.cn/problems/rotate-array/solutions/551039/xuan-zhuan-shu-zu-by-leetcode-solution-nipk/?envType=study-plan-v2&envId=top-100-liked
力扣官方题解方法二:环状替换

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

相关文章:

  • 搞定99%安装问题!OpenClaw 完整部署与故障修复
  • G-Helper终极指南:重新定义华硕笔记本硬件控制的轻量级革命
  • 模块 包 循环导入 系统
  • 3PEAK思瑞浦 TPA133A2-VS1R-S MSOP8 电流信号检测放大器
  • AI4C编译调优的终极技巧:提升程序性能30%的秘密
  • NCM音乐格式转换终极指南:5分钟解锁你的音乐收藏
  • Mineradio开源音乐播放器下载安装介绍(附下载链接)
  • 为什么好人没好报?你可能误解了“诚信”
  • 【会议征稿通知 | 西藏大学主办 | JPCS出版 | EI 、Scopus稳定检索】2026年水电系统与能源工程学术会议 (HSEE 2026)
  • 智慧矿场施工状态监测 推土机识别 装载机数据集 挖掘机等工程机械数据集第10096期
  • 实测有效|OpenClaw 闪退卡顿、网关异常根治教程
  • lac_agent自愈链路上篇——crontab守护的那些坑与健康检查实战
  • 计算机毕业设计之基于实训室管理平台的设计与实现
  • 逻辑回归(Logistic Regression)培训课件
  • .NET 8加持:C#上位机调用国产PLC运动控制指令实战
  • 医疗NLP落地实录:从病历结构化到药物发现,三大场景技术选型与合规避坑指南
  • YOLOv8一站式实战:图像分类、目标检测与实例分割全解析
  • 前端入门必学:用CSS实现三角形的常用三种方式
  • Airbnb 亿级流量的限流架构
  • 海上船舶识别数据集 渔船监测 货船识别 游艇数据集 油轮识别图像数据集 船舶类分类和测数据集 数据集第10163期 数字化智能化识别数据集
  • 【学习记录】Week3(三):灵魂注入——x86/x64 手写基础 Shellcode 实战
  • 界面控件DevExpress WPF v26.1新版系统配置要求|按需对应
  • 北邮 AI无线通信 | 基于KNN的调制模式识别(2)依托于MatlabR2023b对调制信号训练数据生成部分的仿真设计(data_generation_module)
  • 如何用ShaderGlass为Windows桌面添加实时GPU着色器效果
  • 移动端 App 测试入门(3)----Charles使用
  • Claude Code深度体验:Anthropic的编程Agent到底有多强?
  • 【小白也能轻松玩转龙虾】虾壳云一键部署极简流程,低配主机流畅运行 OpenClaw v2.7.9(附最新安装包)
  • 虚拟线程落地实战:从原理到生产级最佳实践
  • 企业 AI 落地六大深坑:预算超支、系统闲置的根因与工程化破局路径
  • 测量显微镜在半导体前道检测中的应用有哪些?