常见算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见算法相关的知识,希望对你有一定的参考价值。

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

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; }

 

以上是关于常见算法的主要内容,如果未能解决你的问题,请参考以下文章

hadoop的mapreduce常见算法案例有几种

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

Android 实用代码片段

Android 实用代码片段