leetcode:1267. 统计参与通信的服务器(数组,中等)
程序员文章站
2022-03-23 16:46:26
...
题目:
分析:这道题的难点在于行列的统计可能出现重复。
我的解决方法是行的ok时变成0.
写的非常好,引入变量解决重复加的问题。
代码:
class Solution {
public:
int countServers(vector<vector<int>>& g) {
int A[255];
int B[255];
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
//vector<int> > g;
if(g.size()==0) return 0;
int all=0;
for(int i=0;i<g.size();i++)
{
int ok=0;
int c=0;
int t=-1;
for(int j=0;j<g[0].size();j++)
{
if(g[i][j]!=0)
{
if(ok==0)
{
ok=1;c=1;t=j;
}
else{
all++;
all+=c;
c=0;
A[t]=1;
A[j]=1;
g[i][j]=0;
g[i][t]=0;
}
}
}
}
//列
for(int i=0;i<g[0].size();i++)
{
int ok=A[i];
int c=0;
for(int j=0;j<g.size();j++)
{
if(ok==1)
{
if(g[j][i]==1) {
all++;
all+=c;
c=0;
}
}
else{
if(g[j][i]==1)
{
ok=1;
c=1;
}
}
}
}
return all;
}
};