题目描述
思路
模拟
根据题意,模拟即可。
Python实现
class Solution:
def numSpecial(self, mat: List[List[int]]) -> int:
r_sum = [sum(row) for row in mat]
c_sum = [sum(col) for col in zip(*mat)]
ans = 0
for i, row in enumerate(mat):
for j, x in enumerate(row):
if x == 1 and r_sum[i] == 1 and c_sum[j] == 1:
ans += 1
return ans
Java实现
class Solution {
public int numSpecial(int[][] mat) {
int m = mat.length, n = mat[0].length;
int[] r_sum = new int[m];
int[] c_sum = new int[n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
r_sum[i] += mat[i][j];
c_sum[j] += mat[i][j];
}
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (mat[i][j] == 1 && r_sum[i] == 1 && c_sum[j] == 1) {
ans++;
}
}
}
return ans;
}
}
C++实现
class Solution {
public:
int numSpecial(vector<vector<int>>& mat) {
int m = mat.size(), n = mat[0].size();
vector<int> r_sum(m);
vector<int> c_sum(n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
r_sum[i] += mat[i][j];
c_sum[j] += mat[i][j];
}
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (mat[i][j] == 1 && r_sum[i] == 1 && c_sum[j] == 1) {
ans++;
}
}
}
return ans;
}
};