• 前端会遇到的算法


    1.判断一个单词是否是回文(比如 mamam、redivider)
    function checkPalindrom(str) {  
        return str == str.split('').reverse().join('');
    }
    console.log(checkPalindrom('mamam'));  //true
    console.log(checkPalindrom('guojing'));  //false
    2.去掉一整型数组重复的值
    比如输入: [1,13,24,11,11,14,1,2] 
    输出: [1,13,24,11,14,2]
    考察对Object的使用,利用key来进行筛选
    const unique = function(arr) {  
        let hashTable = {};
        let data = [];
        for(let i=0,l=arr.length;i<l;i++) {
            if(!hashTable[arr[i]]) {
                hashTable[arr[i]] = true;
                data.push(arr[i]);
            }
        }
        return data
    }
    module.exports = unique;
    3.统计一个字符串出现最多的字母
    输入 : afjghdfraaaasdenas 
    输出 : a
    function findMaxDuplicateChar(str) {  
        if(str.length == 1) {
            return str;
        }
        let charObj = {};
        for(let i=0;i<str.length;i++) {
            if(!charObj[str.charAt(i)]) {
                charObj[str.charAt(i)] = 1;
            }else{
                charObj[str.charAt(i)] += 1;
            }
        }
        let maxChar = '',
            maxValue = 1;
        for(var k in charObj) {
            if(charObj[k] >= maxValue) {
                maxChar = k;
                maxValue = charObj[k];
            }
        }
        return maxChar;
    }
    module.exports = findMaxDuplicateChar;
    4.排序算法
    动画演示地址:http://math.hws.edu/eck/jsdemo/sortlab.html
    function mySort(arr) { for(let i = 0,l=arr.length;i<l-1;i++) { for(let j = i+1;j<l;j++) { if(arr[i]>arr[j]) { let tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } } } return arr; } module.exports = mySort;
    5.不借助临时变量,进行两个整数的交换
    输入 a = 2, b = 4 
    输出 a = 4, b =2
    {
      b = b-a;
      a = b+a;
      b = a-b;          
    }

    斐波那契数列的曲线:0、1、1、2、3、5、8、13、21、34、……

    6.使用canvas 绘制一个有限度的斐波那契数列的曲线
    https://codepen.io/Jack_Pu/pen/LRaxZB
    function getFibonacci(n) {  
        var fibarr = [];
        var i = 0;
        while(i<n) {
            if(i<=1) {
                fibarr.push(i);
            }else {
                fibarr.push(fibarr[i-1] + fibarr[i-2])
            }
            i++;
        }
        return fibarr;
    }

    参考:

    http://web.jobbole.com/88471/

    http://math.hws.edu/eck/jsdemo/sortlab.html(排序算法演示)

    https://codepen.io/Jack_Pu/pen/LRaxZB(canvas绘制曲线)

    工欲善其事 必先利其器
  • 相关阅读:
    暑假第一周总结
    洛谷P3378 【模板】堆 题解 堆(Heap)入门题
    洛谷P2170 选学霸 题解 并查集+01背包
    洛谷P1433 吃奶酪 题解 状态压缩DP
    洛谷P2835 刻录光盘 题解 点的度数+并查集
    洛谷P1991 无线通讯网 题解 并查集+二分答案
    洛谷P4185 [USACO18JAN]MooTube G 题解 并查集
    洛谷P4145 上帝造题的七分钟2 / 花神游历各国 题解 线段树+懒惰标记
    洛谷P2658 汽车拉力比赛 题解 二分答案+搜索
    洛谷P1546 最短网络 Agri-Net 题解 最小生成树/Prim算法
  • 原文地址:https://www.cnblogs.com/fengyouqi/p/9571097.html
Copyright © 2020-2023  润新知