【牛客刷题】前端--JS篇(三)

简介: 【牛客刷题】前端--JS篇(三)

题1:总成绩排名


描述(题目中等) 考点:sort


请补全JavaScript代码,要求将数组参数中的对象以总成绩(包括属性"chinese"、“math”、“english”)从高到低进行排序并返回。


解题思路:


根据题目要求,根据数组参数中的对象属性"chinese"、“math”、"english"之和对数组参数进行排序,核心步骤有:


  1. 对数组参数进行sort排序,sort接受一个函数
  2. 在该函数中声明两个变量,分别用于存储该函数两个对象参数的"chinese"、“math”、"english"属性之和

3.最后根据声明的两个变量值对比将数组进行排序

题解:

const _rank = array => {
  array.sort((left, right) => {
    let lg = left.chinese + left.math + left.english
    let rg = right.chinese + right.math + right.english
    return rg - lg
  })
  return array
}

题2:子字符串频次


描述(题目中等)考点:indexOf、while


请补全JavaScript代码,该函数接受两个参数分别为字符串、子字符串,要求返回子字符串在字符串中出现的频次。


解题思路:


根据题目要求查询第二个参数在第一个参数中出现的频次,核心步骤有:


通过indexOf查找到第二个参数初始index值

设置初始出现频次为0

当index大于-1时进入while循环,出现频次加1,再查找下一个index值

题解:

const _searchStrIndexOf = (str, target) => {
    let index = str.indexOf(target)
    let sum = 0
    while (index > -1) {
        index = str.indexOf(target, index + 1)
        sum++
    }
    return sum
}

题3:数组扁平化


描述(题目中等) 考点:reduce、递归


请补全JavaScript代码,要求将数组参数中的多维数组扩展为一维数组并返回该数组。


注意:数组参数中仅包含数组类型和数字类型


解题思路:


  1. 返回一个数组的reduce方法,该reduce方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,该函数第一个参数为初始值或计算之后的返回值,第二个参数为当前项的值。
  2. 在reduce接收的函数中返回一个结果的拼接(concat),当当前值数据类型为数组的时候,递归重新调用"flatten"函数,否则将值拼接在结果之后返回

微信图片_20221013124209.png

题解

const _flatten = arr => {
    return arr.reduce((result, item) => {
        return result.concat(Array.isArray(item) ? _flatten(item) : item)
    }, [])
}

题4:判断质数


描述(题目中等) 考点:质数


请补全JavaScript代码,要求在Number对象的原型对象上添加"_isPrime"函数,该函数判断调用的对象是否为一个质数,是则返回true,否则返回false。


解题思路:


  1. 首先在Number对象的原型上添加该函数
  2. 函数中当数字参数小于2时,返回false
  3. 然后进入循环,初始值为2,结束条件为当初始值等于数字参数时,返回true

题解:

Number.prototype._isPrime = function () {
    let number = this.valueOf()
    if(number < 2) return false
    for(let i=2 ; i<=number ; i++) {
        if(i === number) return true
        if(number%i === 0) return false
        if(number%i !== 0) continue
    }
}

题5:判断斐波那契数组(拔高题目)


描述(题目中等)考点:斐波那契数列


请补全JavaScript代码,要求以Boolean的形式返回参数数组是否为斐波那契数列。在数学上,斐波那契数列以如下方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)


注意:[0,1,1]为最短有效斐波那契数列

解题思路:

  1. 最小有效数组为[0, 1, 1],所以数组长度小于3时,默认为false
  2. 计算关系 array[i] + array[i + 1] = array[i + 2];
  3. 数组循环的边界问题,在快指针到达倒数第二个元素的时候循环就应该结束了。

题解:

const _isFibonacci = array => {
    // 补全代码
    if(array.length < 3) return false;
    let i = 0,
        j = 1;
    while (j < array.length - 1) {
        if (array[j + 1] == array[i] + array[j]) {
            i++;
            j++;
        } else {
            return false;
        }
    }
    return true;
}

微信图片_20221013124418.png

相关文章
|
3天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
5天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
19 4
|
15天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
15天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
24 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
20天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
28 1
|
20天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
17 1
|
1月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
133 2
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
43 0
|
1月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
下一篇
无影云桌面