前段算法题汇总
前言:尝试自己根据思路去使用js实现的算法,发现对于算法有这么几个问题:
- 算法是严谨的,一般都是设计到循环,所以要思考到循环中的特殊情况以及循环条件。
- 不能钻牛角尖,无从下笔时,在纸上写思路,根据思路一步一步实现,在实现的过程中,如果遇到问题,不要慌忙推翻之前的思路,细想之后再改善,大的思路如果不是有很大的问题,先不要推翻,不然很容易陷入到取舍两难的境地。
- 注意算法的调试方法,尤其是输出,断点的灵活应用。
1、数组去重
数组去重的几种方法请参照数组操作方法
2、js脚本整理文件
整理前:
1 | 111.232.213 ascqwdwd |
整理后:
1 | '111.232.213': [ 'ascqwdwd', 'qwdqwdqw' ], |
3、求1000以内所有的质数
对于求质数,和判断一个数是不是质数,原理是一样,区别在于求质数是对一群数进行判断,复杂度提高,如果只是判断一个数是不是质数,不要考虑复杂度,直接从2到这个数的平方根开始循环看能不能整除。
对于求多少以内的质数,也可以这样,但是这样的时间复杂度就提高了,网上有说几种不同的境界,这里就不介绍,我才用的筛选法,很明显,对于明显不是质数的数,没有做运算,节省的时间。
1 | /** 求num中所有质数 |
4、不借助临时变量,进行两个整数的交换
1 | function exchange(a,b){ |
5、找出数组最大的差值
1 | function maxDiff(array) { |
6、