欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode:1267. 统计参与通信的服务器(数组,中等)

程序员文章站 2022-03-23 16:46:26
...

题目:

leetcode:1267. 统计参与通信的服务器(数组,中等)

分析:这道题的难点在于行列的统计可能出现重复。

我的解决方法是行的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;
    }
};