千家信息网

JS面试中常见的算法题有哪些

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"JS面试中常见的算法题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JS面试中常见的算法题有哪些"吧!1.验证一个数是否是素
千家信息网最后更新 2025年11月07日JS面试中常见的算法题有哪些

这篇文章主要讲解了"JS面试中常见的算法题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"JS面试中常见的算法题有哪些"吧!

1.验证一个数是否是素数

1、如果这个数是 2 或 3,一定是素数;

2、如果是偶数,一定不是素数;

3、如果这个数不能被3——它的平方根中的任一数整除,m必定是素数。而且除数可以每次递增(排除偶数)

function isPrime(num){

if (num === 2 || num === 3) {

return true;

};

if (num % 2 === 0) {

return false;

};

let divisor = 3,limit = Math.sqrt(num);

while(limit >= divisor){

if (num % divisor === 0) {

return false;

}

else {

divisor += 2;

}

}

return true;

}

console.log(isPrime(30)); // false

2.斐波那契

最简单的做法:递归。

function fibonacci(n){

if (n <= 0) {

return 0;

}

if (n == 0) {

return 1;

}

return fibonacci(n-1) + fibonacci(n-2);

}

但是递归会有严重的效率问题。比如想要求得f(10),首先需要求f(9)和f(8)。同样,想求f(9),首先需要f(8)和f(7)…这样就有很多重复值,计算量也很大。

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以在后台私信我:前端,即可免费获取。

改进:从下往上计算,首先根据f(0)和f(1)计算出f(2),再根据f(1)和f(2)计算出f(3)……以此类推就可以计算出第n项。时间复杂度O(n)。

function fibonacci(n){

let ori = [0,1];

if (n < 2) {

return ori[n];

};

let fiboOne = 1,fiboTwo = 0,fiboSum = 0;

for (let i = 2; i <= n; i++) {

fiboSum = fiboOne + fiboTwo;

fiboTwo = fiboOne;

fiboOne = fiboSum;

}

return fiboSum;

}

console.log(fibonacci(5));

3、求最大公约数

除数 在a和b的范围内,如果同时a和b处以除数的余等于0,就将此时的除数赋值给res;除数自增,不断循环上面的计算,更新res。

function greatestCommonDivisor(a, b){

let divisor = 2,res = 1;

if (a < 2 || b < 2) {

return 1;

};

while(a >= divisor && b >= divisor){

if (a%divisor === 0 && b%divisor === 0) {

res = divisor;

}

divisor++;

}

return res;

};

console.log(greatestCommonDivisor(8, 4)); // 4

console.log(greatestCommonDivisor(69, 169)); // 1

解法2:

function greatestCommonDivisor(a,b){

if (b === 0) {

return a;

} else {

return greatestCommonDivisor(b,a%b);

}

};

4、数组去重

对原数组进行遍历

获取arr[i]的值 j;

对应到辅助数组 exits 的位置 j 的值,如果没有,则证明arr[i] 的值没有重复,

此时将 值j 存入res数组,并将辅助数组 j 位置的值置为 true。

最后返回res数组。

感谢各位的阅读,以上就是"JS面试中常见的算法题有哪些"的内容了,经过本文的学习后,相信大家对JS面试中常见的算法题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数组 前端 除数 学习 常见 算法 素数 位置 偶数 内容 问题 递归 辅助 验证 复杂 很大 以此类推 不断 个数 做法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州联通网络技术 公安队伍网络安全警示教育 公安局网络安全管理岗位工作时间 初学软件开发入门书籍 网络技术开发方面的合同 银行和软件开发公司签订协议 看网络安全心得体会初中 李乐言网络安全 三门峡网络技术是什么 杭州金华高速服务器有充电桩 数据库条件语句where 在软件开发过程中 简单的说 连接服务器数据库连接超时 排队返利软件开发 网络安全是哪几方面进行合作 工业网络技术专升本 关于网络安全的宣传动画 贺州网络安全宣传 网络安全主管岗位说明书 关系数据库有什么功能和特点 软件开发销售计划 四川大学图书馆全文数据库 网络安全宣传周2021年海报 互联网 科技金融 发展 数据库如何删除表中一列 无锡电商软件开发收费标准 ipfs分布式服务器是什么价值 服务器安全操作规范 网络安全支付有哪些 嘉兴网络安全保卫大队
0