Shaoli's Blog

前端开发必须掌握的一些算法题


1、排序算法

最基础的就是冒泡排序了,下面来看看

		function bubbleSort(arr) {
            for(let i=0;i<arr.length-1;i++){
                for(let j=i+1;j<arr.length;j++){
                    if(arr[i]>arr[j]){
                        let temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            return arr;
        }


还有一种是快速排序,算法参考某个元素值,将小于它的值,放到左数组中,大于它的值的元素就放到右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排好顺序的数组了。

	function quickSort(arr) {
        if(arr.length<=1) {
            return arr;
        }
        let leftArr = [];
        let rightArr = [];
        let q = arr[0];
        for(let i = 1,l=arr.length; i<l; i++) {
            if(arr[i]>q) {
                rightArr.push(arr[i]);
            }else{
                leftArr.push(arr[i]);
            }
        }
    	
        return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
    }



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

回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。

function checkPalindrom(str) {  
    return str == str.split('').reverse().join('');
}



3、数组去重

参考本文 数组去重




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

function findMost(str){
    let max = 1; 
    let maxC = '';   
    let arr = {}
    for(let i = 0;i<str.length;i++){
        if(!arr[str.charAt(i)]){
            arr[str.charAt(i)] = 1;
        }else{
            arr[str.charAt(i)]+=1;
        }
    }
    for(let k in arr){
        if(arr[k] >= max) {
            maxC = k;
            max = arr[k];
        }
    }
    return maxC;
}



5、 找出正数组的最大差值

我们知道,最大差值肯定是一个数组中最大值与最小值的差

function getMaxProfit(arr) {
    let maxP = 0;
    let minItem = arr[0];
    for(let i = 0;i<arr.length;i++){
        let curItem = arr[i];
        minItem = Math.min(curItem, minItem);
        let curP = curItem - minItem;
        maxP = Math.max(curP, maxP);
    }
    return maxP;
}



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

function getRandomStr(n) {
    let str = 'abcdefghijklmnopqrstuvwxyz1234567890'
    let temp = '';
    let len = str.length;
    for(let i=0;i<n;i++){
        temp += str.charAt(Math.random()*len);
    }
    return temp;
}



    评论列表

  • 暂无评论...快来说说吧!
person
0 / 16
comment
0 / 100