提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天去一家外企公司面试,不加班不打卡年假15天的公司。然后除了一道现场敲代码的题,时间很短可能只有20分钟,当时面试紧张脑袋短路没有写出所有步骤,现在后悔莫及,然后回家自己慢慢又敲了一遍就出来了。
一、题目
let arr = [
[0, 1, 1],
[1, 1, 2],
[1, 0, 3],
[4, 1, 5],
]
要求:第二层数组中有0的话那他的行列全部设置为0
例:
// 最后结果为
[[0, 0, 0]
[0, 0, 2]
[0, 0, 0]
[0, 0, 5]]
二、个人思路
function filterArr(arr) {
let newArr = JSON.parse(JSON.stringify(arr))
for (let i = 0; i < arr.length; i++) {
if (arr[i].includes(0)) {
for (let j = 0; j < newArr[i].length; j++) {
newArr[i][j] = 0
}
}
for(let j = 0; j < arr[i].length; j++){
if (arr[i][j] === 0) {
for(let k = 0; k < newArr.length; k++) {
newArr[k][j] = 0
}
}
}
}
return newArr
}
filterArr(arr)
总的思路是先去复制一份一样的数组。然后在老数组上判断,在新数组上更改,最后返回出新数组。
先for循环老数组,然后在老数组上循环每一项includes(0)的时候就再循环新数组,把新数组的那一行都设置为0。
然后再for循环老数组里面的数组拿到他们值为0的索引,最后再循环新数组在每一列为j的索引给设置成0。
总结
面试的时候放轻松,平时多做点题。遇到这些面试要写题的,太久不写题真不一定能立马写出来。。。