js中基础算法题

1.如何实现数组中的去重,即arr = [1,1,2,3,4,3,3,5,6,4]进行代码处理变成arr = [1,2,3,4,5,6]

案例分析: 

        1.需要一个去重后接收数据的新数组 newArr = []

        2.循环遍历旧数组中的数据 i = 0; i < arr.length;

        3.查找newArr中是否有当前遍历的旧数组中的当前值 newArr.indexOf(arr[i]) == -1 

        4.如果等于-1就说明newArr中没有这个数据

        5.所以newArr.push(arr[i]) 把这个数据放入到newArr的最后

        6.最后输出这个newArr

代码实现:

2.分别使用while/do-while/for循环以及递归算法实现10的阶乘

案例分析:

        1.10的阶乘:10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

        2.首先需要一个变量接收最终的结果,因为实现乘法,所以不能为0,即result = 1;

        3.循环:for/while/do...while 

        4.核心算法:result *= i;

代码实现:

3.使用循环打印九九乘法表

案例分析:

        1.在控制台输出打印九九乘法表

        2.实现换行:转义字符 '\t'

        3.控制换行:console.log()默认是打印一行换一行,所以需要把一行的乘法数字都通过字符串拼接在一起,等这一行结束后,在for循环后面打印即可

代码实现:

4.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

案例分析:

        1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

        2.首先需要三层循环,分别遍历百、十、个位上的数字 3个变量

        3.判断个十百位数字是否都相等 if(i != j && j != k && k != i){}

        4.需要一个变量输出获取到的无重复数字的三位数

        5.另外需要一个获取数量的变量 输出数量

代码实现:

5.判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)

案例分析:

        1.判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)

        2.两层循环,外层循环控制遍历101~200之间所有的数,内存循环控制除了1和它本身以外的其他因子

        3.内部循环判断:i % j == 0 肯定不是素数 break直接跳出整个循环

        4.如果j == i - 1,则取到素数

        5.另外根据需要还可以有一个接收数量的变量count

代码实现:

6.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

案例分析:

        1.循环变量100~1000里的三位数

        2.分别取出个位、十位、百位上的数字

        3.核心算法:判断 n == i*i*i + j*j*j + k*k*k 结果为true,则为水仙花数

代码实现:

 

 

 

 

 

 

 

 

 

 

 

 


版权声明:本文为LiuYQing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。