当前位置: 首页 > news >正文

【每日一题】1267. 统计参与通信的服务器

【每日一题】1267. 统计参与通信的服务器

  • 1267. 统计参与通信的服务器
    • 题目描述
    • 解题思路

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

题目描述

这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。

如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。

请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。

示例 1:

在这里插入图片描述

输入:grid = [[1,0],[0,1]]
输出:0
解释:没有一台服务器能与其他服务器进行通信。

示例 2:

在这里插入图片描述

输入:grid = [[1,0],[1,1]]
输出:3
解释:所有这些服务器都至少可以与一台别的服务器进行通信。

示例 3:

在这里插入图片描述

输入:grid = [[1,1,0,0],[0,0,1,0],[0,0,1,0],[0,0,0,1]]
输出:4
解释:第一行的两台服务器互相通信,第三列的两台服务器互相通信,但右下角的服务器无法与其他服务器通信。

提示:

m == grid.length
n == grid[i].length
1 <= m <= 250
1 <= n <= 250
grid[i][j] == 0 or 1

解题思路

思路:如果直接遍历二维数组时再分别对每一项分别遍历行或者列进而判断是否能够参与通信的时间复杂度较高,故此时选择对于是否能够参与通信进行预处理,即分别使用行数组row存储每一行是否能够参与通信、使用列数组col存储每一列是否能够参与通信,其中每一行或者每一列是否能够参与通信的条件是为1的数量大于等于2。

class Solution {
public:int countServers(vector<vector<int>>& grid) {// 数据预处理int m=grid.size();int n=grid[0].size();// 分别统计行和列vector<bool> row(m,false);vector<bool> col(n,false);// 遍历gird 统计行for(int i=0;i<m;i++){// 记录每行数量int num=0;for(int j=0;j<n;j++){if(grid[i][j]==1)num++;}if(num>=2)row[i]=true;}// 遍历gird 统计列for(int i=0;i<n;i++){// 记录每列数量int num=0;for(int j=0;j<m;j++){if(grid[j][i]==1)num++;}if(num>=2)col[i]=true;}int res=0;// 遍历gridfor(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]==1&&(row[i]||col[j]))res++;}}return res;}
};
class Solution {
public:int countServers(vector<vector<int>>& grid) {// 数据预处理int m=grid.size();int n=grid[0].size();// 分别统计行和列vector<int> row(m,0);vector<int> col(n,0);// 遍历gird 统计行for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]==1){row[i]++;col[j]++;}}}int res=0;// 遍历gridfor(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]==1&&(row[i]>=2||col[j]>=2))res++;}}return res;}
};

总结:第一次使用的数组是bool类型,这样需要三次遍历;第二次使用的数组是int类型,这样只需要两次遍历。

http://www.lryc.cn/news/146209.html

相关文章:

  • Python入门教程29:字符串前加r、u、b、f是什么意思?
  • java8 IntStream.range
  • 数据库集群的简单了解
  • CSS中如何实现文字阴影效果(text-shadow)?
  • Nginx从入门到精通(超级详细)
  • 为何反射探针关闭Mipmap后变成了白图
  • 成都睿趣科技:抖音开网店前期的流程是什么
  • 机房安全之道:构筑坚固的网络防线
  • 使用GoLand进行远程调试
  • C++通过JNI调用JAVA方法返回ArrayList对象
  • .netcore grpc截止时间和取消详解
  • React组件间数据传递(弹框和高阶组件(HOC)特性实现)
  • 只考一门数据结构,计算机学硕复录比1:1的山东双非学校考情分析
  • SpringMVC之异常处理器
  • 【数据结构与算法篇】手撕八大排序算法之快排的非递归实现及递归版本优化(三路划分)
  • docker network
  • 回归预测 | MATLAB实现DBN-ELM深度置信网络结合极限学习机多输入单输出回归预测
  • 新亮点!安防视频监控/视频集中存储/云存储平台EasyCVR平台六分屏功能展示
  • 深入解析SNMP协议及其在网络设备管理中的应用
  • 【SA8295P 源码分析】86 - AIS Camera Device 设备初始化 之 AisProcChainManager 模块初始化源码分析
  • 十五、pikachu之CSRF
  • C语言网络编程:实现自己的高性能网络框架
  • hive表向es集群同步数据20230830
  • 五、Kafka消费者
  • 类 中下的一些碎片知识点
  • JVM第二篇 类加载子系统
  • 火爆全网!HubSpot CRM全面集成,引爆营销业绩!
  • 远程调试环境
  • Java面试之用两个栈实现队列
  • Python-实用的文件管理及操作