当前位置:首页 > JavaScript

js实现批量右移

2026-03-16 07:41:17JavaScript

实现数组元素批量右移的方法

通过交换元素位置实现右移操作,以下是具体实现方式:

function batchRightShift(arr, shiftCount) {
  const len = arr.length;
  shiftCount = shiftCount % len;

  reverse(arr, 0, len - 1);
  reverse(arr, 0, shiftCount - 1);
  reverse(arr, shiftCount, len - 1);

  return arr;
}

function reverse(arr, start, end) {
  while (start < end) {
    [arr[start], arr[end]] = [arr[end], arr[start]];
    start++;
    end--;
  }
}

使用临时数组的实现方式

创建临时数组存储被移动元素:

function rightShiftWithTemp(arr, k) {
  const n = arr.length;
  k = k % n;
  const temp = arr.slice(n - k);

  for (let i = n - 1; i >= k; i--) {
    arr[i] = arr[i - k];
  }

  for (let i = 0; i < k; i++) {
    arr[i] = temp[i];
  }

  return arr;
}

处理字符串右移的情况

字符串可以转换为数组处理后再转回字符串:

function stringRightShift(str, shift) {
  const arr = str.split('');
  const shifted = batchRightShift(arr, shift);
  return shifted.join('');
}

性能优化建议

对于大型数组,使用三次反转法效率更高,时间复杂度为O(n),空间复杂度为O(1)。临时数组方法虽然直观,但需要额外空间。

js实现批量右移

实际应用中应根据数据规模选择合适方法,并注意处理shiftCount大于数组长度的情况。

标签: 批量js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…