常见算法

判断一个单词是否是回文?

var str="mamam";
function check(str){
    return str== str.split(‘‘).reverse().join(‘‘);
}
check(str)  //true

去掉一组整型数组重复的值

利用一个空对象和空数组,遍历数组元素,每次判断对象中是否存在这个值,如果不存在,将obj[x]设置为1,将这个值push到空数组

function delSame(arr){
    var obj={},
        res=[];
    arr.forEach(function(x){
        if(!obj[x]){
            obj[x]=1;
            res.push(x);
        }
    })
    return arr;
}

ES6的方法

let delSame = arr => Array.from(new Set(arr))

统计一个字符串出现最多的字母

var findMax= str =>{
    let obj={},
        max=0,
        char=‘‘;
    for(let i=0;i<str.length;i++){
        if(!obj[str[i]]){
            obj[str[i]]=1;
        }else{
            obj[str[i]]++;
        }
    }

    for(let k in obj){
        if(obj[k]>max){
            max=obj[k];
            char=k;
        }
    }

    return `max is ${max} , char is ${char}`
}

借助临时变量,进行两个整数的交换

//变量的解构赋值
var  a = 2, b = 4;
let swap=(a,b)=>[a,b]=[b,a]

swap(a,b)//[4,2]

找出下列正数组的最大差值比如:

输入 [10,5,11,7,8,9]

输出 6

var findMaxGap= arr=>{
    let res=[];
    for(var i=0;i<arr.length-1;i++){
        for(var j=i+1;j<arr.length;j++){
            var gap=Math.abs(arr[i]-arr[j]);
            if(res.indexOf(gap)==-1){
                res.push(gap);
            }
        }
    }
    return res.sort((a,b)=> a-b).pop();
}

findMaxGap([10,5,11,7,8,9])

随机生成指定长度的字符串

function random(n){
    var str=‘abcdefghijklmnopqrstuvwxyz123456789‘,
        res=‘‘,
        l=str.length;
    for(var i=0;i<n;i++){
        res+=str.charAt(Math.floor(Math.random()*l))
    }
    return res;
}

实现类似getElementsByClassName 的功能

function queryClassName(node, name) {
  var starts = ‘(^|[ \n\r\t\f])‘,
       ends = ‘([ \n\r\t\f]|$)‘;//包含四种情况,单个单词,首单词,中间单词,微单词。
       var array = [],
        regex = new RegExp(starts + name + ends),//找个这个节点下的所有元素,遍历这个类数组,如果test符合,就push到新的数组,最后返回这个数组。
        elements = node.getElementsByTagName("*"),
        length = elements.length,
        i = 0,
        element;

    while (i < length) {
        element = elements[i];
        if (regex.test(element.className)) {
            array.push(element);
        }

        i += 1;
    }

    return array;
}
时间: 2024-10-10 14:39:40

常见算法的相关文章

acm常见算法及例题

转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法

机器学习常见算法分类汇总

机器学习常见算法分类汇总 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.这里 IT 经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性. 学习方式 根据数据类型的不同,对一个问题的建模有不同的方式.在机器学习或者人工智能领域,人们首先会考虑算法的学习

前端常见算法JS实现

算法是程序的灵魂,一个优秀的前端工程师对算法也是要有所了解的. 排序算法 1. 冒泡排序 //冒泡排序 function bubbleSort(arr){ var i = j = 0; for(i=1;i<arr.length;i++){ for(j=0;j<=arr.length-i;j++){ var temp = 0; if(arr[j]>arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } 2.

机器学习14种常见算法

最近收到一封公司内部邮件,说,有个机器人程序--**小助手,上线(不知道哪个部门写的),让大家没事的时候,测试,顺便让程序学习一下,超过 50 条聊天,有抽奖机会~我大概试了一下,有点无语,这写得是个神马玩意啊,这么烂,基本聊不上 3 句,最多也就是,"你是谁","多大了",即便我顺着程序说,也是驴唇不对马嘴~你要是让程序学习,互联网这么大,还用得着让人来吗,即便让人来,自己也得差不多才行啊,连个雏形都没有,还好意思让大家测试,美其名曰:让程序学习~ 机器学习无疑是

[Machine Learning] 机器学习常见算法分类汇总

声明:本篇博文根据http://www.ctocio.com/hotnews/15919.html整理,原作者张萌,尊重原创. 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的分类. 博主根据原创基础上加入了遗

面试常见算法-排序查找算法

算法是程序员必被的一个技能,在面试中常常出现,下面总结了面试中出现的常见算法,这些算法程序员应该牢记在心中,要非常熟练. 插入排序算法 原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序. 要点:设立哨兵,作为临时存储和判断数组边界之用. public class InsertSort { private static void insertSort(int[] a) { int j; int tmp; for

五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)

近日复习了一些算法知识,小记于此 递归与分治法 直接或间接地调用自身的算法称为递归算法. 递归是算法设计与分析中常用的一种技术,描述简单且易于理解. 分治法的设计思想是将一个规模为n难以解决的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同. 递归地解这些子问题,然后将各子问题的解合并得到原问题的解. 典型例子:Fibonacci数列,阶乘,Hanoi塔:二分法搜索.快速排序.合并排序. 动态规划法 动态规划过程是:根据当前(阶段)状态,采取相应的决策,引起状态的转移.如下图,一

C#常见算法题目

    //冒泡排序    public class bubblesorter    {        public void sort(int[] list)        {            int i, j, temp;            bool done = false;            j = 1;            while ((j < list.Length) && (!done))            {                don

机器学习常见算法优缺点总结

机器学习常见算法优缺点总结 K近邻:算法采用测量不同特征值之间的距离的方法进行分类. 优点: 1.简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归: 2.可用于数值型数据和离散型数据: 3.训练时间复杂度为O(n):无数据输入假定: 4.对异常值不敏感 缺点: 1.计算复杂性高:空间复杂性高: 2.样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少): 3.一般数值很大的时候不用这个,计算量太大.但是单个样本又不能太少 否则容易发生误分. 4.最大的缺点是无法给

[转] js_常见算法

js模拟螺旋矩形算法 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-e