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

leetcode189-轮转数组

leetcode 189
在这里插入图片描述

方法一

思路

首先需要处理k的长度,k的值可以大于nums.length, 这时候需要取余,得到实际需要反转的次数即可,不需要重复去反转,当k=0或者k为nums.length的倍数时,轮转以后的结果都是nums本身
nums = [1,2,3,4,5,6,7], k = 3
轮转以后需要得到的nums = [5,6,7,1,2,3,4]

我们可以把后k个截取出来,得到item = [5,6,7] 此时nums = [1,2,3,4]
然后把item插入到nums头部:nums = [5,6,7,1,2,3,4]

var rotate = function (nums, k) {k = k % nums.length;if (k === 0) return;// 截取后k个元素const item = nums.splice(nums.length - k)// 把后k个元素放在nums头部nums.unshift(...item)
};

方法二

思路

通过三次反转可以实现对应的结果
nums = [1,2,3,4,5,6,7] k = 3

  • 步骤一:反转整个数组 nums = [7,6,5,4,3,2,1]
  • 步骤二:反转前k个元素 nums = [5,6,7,4,3,2,1]
  • 步骤三:反转剩余元素 nums = [5,6,7,1,2,3,4]
var rotate = function (nums, k) {k = k % nums.length;// 首先反转数组reverse(nums, 0, nums.length - 1)// 反转前k个元素reverse(nums, 0, k - 1)// 反转剩余元素reverse(nums, k, nums.length - 1)
};
function reverse(nums, left, right) {while (left < right) {const item = nums[left];nums[left] = nums[right];nums[right] = itemleft++right--}
}
http://www.xdnf.cn/news/12820.html

相关文章:

  • Prefix Caching 详解:实现 KV Cache 的跨请求高效复用
  • c++对halcon的动态链接库dll封装及调用(细细讲)
  • 【CSS-8】深入理解CSS选择器权重:掌握样式优先级的关键
  • 【拆机系列】暴力拆解AOC E2270SWN6液晶显示屏
  • Python训练营打卡Day48(2025.6.8)
  • 【LangChain4J】LangChain4J 第三弹:多模态与文生图的实现
  • leetcode_56 合并区间
  • el-table的select回显问题
  • 图解JavaScript原型:原型链及其分析 | JavaScript图解
  • Alight Motion汉化版:视频剪辑,轻松上手
  • odoo17 反常下表引用上表并能修改
  • 在数字工厂实施过程中,如何学会通过梳理流程的思想来分析解决问题
  • 2014-2023年 最新绿色债券数据
  • 大数据CSV导入MySQL
  • word操作(持续更新)
  • 从菜鸟到骑士:TypeScript 基础修炼手册
  • 磁盘空间清道夫FolderSize 系列:可视化分析 + 重复文件识别,
  • 设备健康管理的范式革命:中讯烛龙全链路智能守护系统
  • QTreeWidget 应用场景与用法详解
  • 华为OD机试-食堂供餐-二分法
  • 408第一季 - 数据结构 - 图II
  • MS8551/MS8552/MS8554 单电源、轨到轨输入输出、高精度运放,可替代AD8551/AD8552/AD8554
  • Android 大文件分块上传实战:突破表单数据限制的完整方案
  • 把二级域名绑定的wordpress网站的指定页面
  • 【论文阅读28】-CNN-BiLSTM-Attention-(2024)
  • UML用例模型与用例图
  • 【RK3588嵌入式图形编程】-Cairo- 变换、旋转、缩放、剪切
  • C++基础进阶:函数、内联函数与Lambda函数详解
  • 开源项目实战学习之YOLO11:12.8 ultralytics-models-utils.py
  • 分布式锁实战:Redisson vs. Redis 原生指令的性能对比