前端笔试算法(上海商米科技,百度)2022.9.13

435 阅读1分钟

9.13百度的笔试,商米的笔试,考的两道简单算法题,难的根本没有头绪,还有算法这东西你理解了和你能敲出来是两码事,不要觉得理解了你就能敲出来,那真不一定,所以多练习,多敲键盘。

第一题快速排序

比较简单对吧?直接上代码吧,代码的有些地方写的非常巧妙,有时候你根本想不到,原来还能这么写:

function quickSort(arr){
    if(arr.length<=1)return arr;
    let left=[];
    let right=[];
    let base=arr.splice(0,1)[0];
    for(let i=0;i<arr.length;i++){
        if(arr[i]<base){
            left.push(arr[i]);
        }else{
            right.push(arr[i]);
        }
    }
    return quickSort(left).concat([base],quickSort(right));
}

巧妙之处就是base的设置,一开始肯定想不到为什么base要这样设置。base到底是什么?

第二题矩阵转置

这题在力扣里边找到了原题,难度划分为简单类型,可见刷题的重要性,直接看代码:

function matrixTransfer(matrix){
    let arr=[];
    if(matrix.length==0&&matrix[0].length==0)return;
    if(matrix.length==1&&matrix[0].length==1)return matrix;
    for(let i=0;i<matrix[0].length){
        let row=[];
        for(let j=0;j<matrix.length;j++){
            row.push(matrix[j][i]);
        }
        arr.push(row);
    }
    return arr;
}

这题的写法也很巧妙哦,仔细琢磨一下写法