面试的时候经常会遇到这样一个面试题:
有一个二维数组如下:
[
[1,1,3,8],
[0,2,5,6],
[3,1,0,4],
[5,8,2,7]
]
需要将包含0的行和列变为0.请输出返回的数组。
使用js实现代码如下:
function clearZero(arr){
var row = arr.length;
var col = arr[0].length;
var rowIndex = [];
var colIndex = [];
for (var i = 0; i < row; i++) {
for (var j = 0; j < col; j++) {
if (arr[i][j] == 0) {
if (rowIndex.indexOf(i) == -1) {rowIndex.push(i)}
if (colIndex.indexOf(j) == -1) {colIndex.push(j)}
}
}
}
for (var i = 0; i < row; i++) {
for (var j = 0; j < col; j++) {
if (rowIndex.indexOf(i) !== -1 || colIndex.indexOf(j) !== -1) {
arr[i][j] = 0
}
}
}
return arr;
}
暂时没有想到复杂度更低的方法.