例如:
输入:
//MxN matrix
matrix =
[
[ 0, 0, 1 ],
[ 1, 1, 0 ],
[ 0, 1, 1 ]
]
输出: 1(因为我们只有(1,2)个索引具有0,而其行和列仅具有一个0)
我尝试了以下操作:
我正在从Matrix获取所有零元素。
然后将它们存储到HashMap中,如下所示:
Indexes which has 0s : [(0,0), (0,1), (1,2), (2,0)]
Hashmap["Row 0"] = 2;
HashMap["Row 1"] = 1;
HashMap["Row 2"] = 1;
HashMap["Col 0"] = 2;
HashMap["Col 1"] = 1;
HashMap["Col 2"] = 1;
哈希表中的1是(第1行,第2行和第1列,第2列) 我必须得到(1,2)
无法对此方法进行编码,还有没有更好的方法。
答案 0 :(得分:1)
您的方法可以优化为使用两个数组而不是哈希映射(应该更快):
var matrix = [
[ 0, 0, 1, ],
[ 1, 1, 0, ],
[ 0, 1, 1, ],
];
// count zeroes on rows and columns
var row0 = new Array(matrix.length).fill(0);
var col0 = new Array(matrix[0].length).fill(0);
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < matrix[i].length; j++) {
if (!matrix[i][j]) {
row0[i]++;
col0[j]++;
}
}
}
// count single zeroes on their respective row and column
var count = 0;
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < matrix[i].length; j++) {
if (!matrix[i][j] && row0[i] == 1 && col0[j] == 1) {
console.log(i, j);
count++;
}
}
}
console.log(count);