Ideas
用一行和一列去记录出现的个数,最后遍历全部元素统计一下
C++
class Solution {
public:
int countServers(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
vector<int> count_m(m), count_n(n);
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (grid[i][j] == 1) {
++count_m[i];
++count_n[j];
}
}
}
int ans = 0;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (grid[i][j] == 1 && (count_m[i] > 1 || count_n[j] > 1)) {
++ans;
}
}
}
return ans;
}
};
Python
嗯…我自己的思路有点笨,就是用一行去记录每列1的个数,然后每行的个数如果大于二就count加进去
class Solution:
def countServers(self, grid: List[List[int]]) -> int:
m, n = len(grid), len(grid[0])
grid.append([0 for _ in range(n)])
re = 0
for mm in range(m):
for nn in range(n):
if grid[mm][nn]:
# print(grid)
grid[m][nn] += 1
if grid[mm].count(1) >= 2:
re += grid[mm].count(1)
for nn in range(n):
grid[mm][nn] = 0
for nn in range(n):
if grid[m][nn] >= 2:
for mm in range(m):
re += grid[mm][nn]
return re