[数组]leetcode5272:统计参与通信的服务器(medium)

编程入门 行业动态 更新时间:2024-10-28 18:28:49

[<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组]leetcode5272:统计参与通信的服务器(medium)"/>

[数组]leetcode5272:统计参与通信的服务器(medium)

题目:

5272.统计参与通信的服务器

题解:

  • 暴力题:因为没有用到一点点算法,就是阅读理解题。。
  • 思路一:遍历数组,若找到一个服务器,然后判断同行同列是否还存在服务器,若存在则此服务器可以参与通信
  • 思路二:分别统计每个服务器的行与列的数字和,若单个服务器的行与列的数字和都为1,那么这个服务器就不能通信

代码如下:

class Solution {
public://思路一:遍历数组,若找到一个服务器,然后判断同行同列是否还存在服务器,若存在则此服务器可以参与通信int countServers_1(vector<vector<int>>& grid) {int count=0,m=grid.size(),n=grid[0].size();for(int i=0;i<m;++i){for(int j=0;j<n;++j){if(grid[i][j]==0)continue;bool ok=false;for(int k=0;k<n;++k)if(grid[i][k]&&k!=j)ok=true;for(int k=0;k<m;++k)if(grid[k][j]&&k!=i)ok=true;if(ok)count++;}}  return count;}//思路二:分别统计每个服务器的行与列的数字和,若单个服务器的行与列的数字和都为1,那么这个服务器就不能通信int countServers(vector<vector<int>>& grid) {int m=grid.size(),n=grid[0].size(),count=0;vector<int> row(m,0),col(n,0);//第一次遍历:统计所有的服务器for(int i=0;i<m;++i)for(int j=0;j<n;++j)if(grid[i][j]==1){row[i]++;col[j]++;count++;}//第二次遍历:删除不能通信的服务器,就是这个服务器的行与列的服务器总和为1的要删除for(int i=0;i<m;++i)for(int j=0;j<n;++j)if(grid[i][j]==1&&row[i]==1&&col[j]==1)count--;return count;}
};

更多推荐

[数组]leetcode5272:统计参与通信的服务器(medium)

本文发布于:2023-07-28 18:53:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1279848.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   通信   服务器   medium

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!