JavaScript 数组算法题

这篇具有很好参考价值的文章主要介绍了JavaScript 数组算法题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目 1:

问题描述: 给定一个整型数组 nums,编写一个函数,将数组中的所有奇数移动到数组的开头,所有偶数移动到数组的末尾,并保持它们的相对顺序。

/**
 * @param {number[]} nums
 * @return {void}
 */
function moveOddEven(nums) {
  let left = 0;
  let right = nums.length - 1;

  while (left < right) {
    while (nums[left] % 2 === 1) {
      left++;
    }

    while (nums[right] % 2 === 0) {
      right--;
    }

    if (left < right) {
      [nums[left], nums[right]] = [nums[right], nums[left]];
    }
  }
}

// 示例输入和输出
const nums = [2, 3, 1, 4, 6, 5];
moveOddEven(nums);
console.log(nums); // 输出 [3, 1, 5, 2, 4, 6]

题目 2:

问题描述: 给定一个整型数组 nums,编写一个函数,找出数组中第 k 大的元素。

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
function findKthLargest(nums, k) {
  nums.sort((a, b) => b - a);
  return nums[k - 1];
}

// 示例输入和输出
const nums = [3, 2, 1, 5, 6, 4];
const k = 2;
console.log(findKthLargest(nums, k)); // 输出 5

题目 3:

问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中最长的连续递增序列的长度。

/**
 * @param {number[]} nums
 * @return {number}
 */
function findLengthOfLCIS(nums) {
  let maxLength = 0;
  let currentLength = 0;

  for (let i = 0; i < nums.length; i++) {
    if (i === 0 || nums[i] > nums[i - 1]) {
      currentLength++;
    } else {
      maxLength = Math.max(maxLength, currentLength);
      currentLength = 1;
    }
  }

  return Math.max(maxLength, currentLength);
}

// 示例输入和输出
const nums = [1, 3, 5, 4, 7];
console.log(findLengthOfLCIS(nums)); // 输出 3

题目 4:

问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中的两个数字,使它们的和与给定的目标值 target 最接近。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
function twoSumClosest(nums, target) {
  nums.sort((a, b) => a - b);

  let left = 0;
  let right = nums.length - 1;
  let closestSum = nums[left] + nums[right];

  while (left < right) {
    const sum = nums[left] + nums[right];
    if (Math.abs(sum - target) < Math.abs(closestSum - target)) {
      closestSum = sum;
    }

    if (sum < target) {
      left++;
    } else {
      right--;
    }
  }

  return closestSum;
}

// 示例输入和输出
const nums = [-1, 2, 1, -4];
const target = 1;
console.log(twoSumClosest(nums, target)); // 输出 2

题目 5:

问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中出现次数超过一半的元素。文章来源地址https://www.toymoban.com/news/detail-829311.html

/**
 * @param {number[]} nums
 * @return {number}
 */
function majorityElement(nums) {
  let majority = nums[0];
  let count = 1;

  for (let i = 1; i < nums.length; i++) {
    if (count === 0) {
      majority = nums[i];
    }

    if (nums[i] === majority) {
      count++;
    } else {
      count--;
    }
  }

  return majority;
}

// 示例输入和输出
const nums = [3, 2, 3];
console.log(majorityElement(nums)); // 输出 3

到了这里,关于JavaScript 数组算法题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【华为OD机考 统一考试机试C卷】寻找连续区间/数组连续和(C++ Java JavaScript Python C语言)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年02月19日
    浏览(33)
  • 建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— 网络协议 建站系列(四)— Web服务器之Apache、Nginx 建站系列(五)— 前端开发语言之HTML、CSS、JavaScript 建站系列(六)— 后端开发语言 建站系列(七)— 常用前后端框架

    2024年02月09日
    浏览(40)
  • 【JavaScript】数组 ② ( JavaScript 数组索引 | JavaScript 遍历数组 | 使用 for 循环遍历数组 )

    在 JavaScript 中 , 数组 的 \\\" 索引 \\\" 又称为 \\\" 下标 \\\" , 从 0 开始计数 , 是 可用于访问 数组元素 的 \\\" 序号 \\\" ; 通过 数组索引 可以 访问 / 获取 / 修改 对应的数组元素 , 语法如下 : 访问数组 元素 时 , 要注意数组的边界 , 如果尝试访问一个不存在的索引 , 会返回 undefined 值 , 并不会报

    2024年04月28日
    浏览(43)
  • (自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

     写自己的开发语言时,很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具 https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502 以上是JSON的简化产生式表示形式。其中, json 是最顶层的规则,可以是一个对象或一个数组。 object 表示一个对象,由一对大括号

    2024年02月10日
    浏览(37)
  • 【华为OD机考 统一考试机试C卷】特殊的加密算法(C++ Java JavaScript Python C语言)

    真题目录:华为OD机考机试 真题目录( D卷 +C卷 + B卷 + A卷) + 考点说明 在线OJ:点击立即刷题,模拟真实机考环境 华为OD面试真题精选:华为OD面试真题精选 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。 规则如下: 明文为一段

    2024年04月16日
    浏览(36)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(35)
  • 4 JavaScript数组和对象

    4 数组和对象 在JS中创建数组非常简单. 直接[ ]即可. 也可以用正规军的new Array(). 不过效果都是一样的. 数组的常用操作: 在JS中创建一个对象非常容易. 和python中的字典几乎一样{ }: 使用对象 从上述内容中几乎可以看到. JS对象的使用几乎是没有门槛的. 十分灵活 代码的效果图如

    2024年02月12日
    浏览(24)
  • JavaScript 数组

    个人主页: 学习前端的小z 个人专栏: JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 之前学习的数据类型,只能存储一个值 比如:Number/String。我们想存储班级中所有学生的姓名,此时该如何存储? 所谓数组,

    2024年04月28日
    浏览(48)
  • JavaScript 数组 函数

    目录 1.数组的概念 2.创建数组 2.1 数组创建的方式 2.2利用new 创建数组 2.3 利用数组字面量创建数组 2.4 数据元素的类型 3.获取数组当元素 3.1数组元素的索引 4.遍历数组 4.1数组的长度 5.数组中新增元素 5.1通过修改length 长度新增数组元素 5.2通过修改数组索引新增数组元素 Java

    2024年02月08日
    浏览(23)
  • JavaScript数组所有方法集合

    ##方法 1、concat 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组 2、copyWithin 浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度 3、entries 返回一个新的 Array Iterator 对象,该对象包含数组中每个索引的键/值对 4、ever

    2024年02月16日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包