温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-03-03 16:11:52 来源:亿速云 阅读:115 作者:iii 栏目:web开发

这篇文章主要讲解了“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)&hellip;这样就有很多重复值,计算量也很大。

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

改进:从下往上计算,首先根据f(0)和f(1)计算出f(2),再根据f(1)和f(2)计算出f(3)&hellip;&hellip;以此类推就可以计算出第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面试中常见的算法题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI