前端与算法 leetcode 189. 旋转数组

[TOC]javascript

前端与算法 leetcode 189. 旋转数组


题目描述

189. 旋转数组前端

概要

把他当作一到简单的题来作,不要想太多了就好也能够不整那些花里胡哨的,直接旋转数组n次,我一开始也想到了这个办法,可是以为太简单并且效率低下,想了好久也没想到合适的办法java

提示

使用额外的数组算法

解析

用一个额外的数组将每一个元素放到对应的位置就好 下标为i的位置对应(i+k)%数组长度 ,而后把新的数组拷贝(深拷贝)到原数组便可数组

算法

/**  * @param {number[]} nums  * @param {number} k  * @return {void} Do not return anything, modify nums in-place instead.  */
var rotate = function (nums, k{
  const re = []
  for (let i = 0; i < nums.length; i++) {
    re[(i + k) % nums.length] = nums[i]
  }
  for (let j = 0; j < nums.length; j++) {
    nums[j] = re[j]
  }
}
复制代码

传入[1,2,3,4,5,6,7] 3的运行结果spa

[5,6,7,1,2,3,4]
复制代码

执行结果code

执行用时 :68 ms, 在全部 javascript 提交中击败了97.94% 的用户
内存消耗 :36.1 MB, 在全部 javascript 提交中击败了9.91%的用户
复制代码
相关文章
相关标签/搜索