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

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--}
}

相关文章:

  • 开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py
  • 学习python做表格6月8日补录
  • 手写 vue 源码 === runtime-core 实现
  • Mysql 基础
  • 第二十七章 位置参数
  • Pinocchio 库详解及其在足式机器人上的应用
  • FPGA静态功耗
  • 【FPGA开发】DDS信号发生器设计
  • 【动态规划】子序列问题(二)
  • Python安装使用教程
  • 国家奖学金答辩PPT+文稿
  • 第三章 内存
  • AUTOSAR实战教程--DoIP_01_配置项解释
  • 在VSCode中使用Ultralytics扩展
  • vscode 配置 latex
  • 港理工:LLM推理与推荐能力集成
  • 机器学习 [白板推导](四)[降维]
  • 计数排序_桶排序
  • hot100 -- 10.回溯系列
  • 电流舵DAC设计(二)
  • 墙绘做网站靠谱不/seo搜索引擎优化期末考试
  • 免费ppt模板在线下载/seo内容优化方法
  • .net网站开发实训代码/黑龙江最新疫情通报
  • 如何建设简易网站/手机系统流畅神器
  • WordPress百度自动翻译/西安百度关键词优化排名
  • 企业建网站作用/百度爱采购优化排名软件