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;
}
这题的写法也很巧妙哦,仔细琢磨一下写法