【每日一题】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.mzph.cn/news/53117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python进行数据分析:数据预处理

六大数据类型 见python基本功 import numpy as np import pandas as pd数据预处理 缺失值处理 float_data pd.Series([1.2, -3.5, np.nan, 0]) float_data0 1.2 1 -3.5 2 NaN 3 0.0 dtype: float64查看缺失值 float_data.isna()0 False 1 …

Kotllin实现ArrayList的基本功能

前言 上次面试时&#xff0c;手写ArrayList竟然翻车&#xff0c;忘了里面的扩容与缩容的条件&#xff0c;再次实现一次&#xff0c;加深印象 源码讲了什么 实现了List列表和RandomAccess随机访问接口List具有增删改查功能&#xff0c;RandomAccess支持下标访问内部是一个扩容…

java使用ExcelExportUtil.exportBigExcel导出大文件(非分页)

网上看到很多使用这个方法处理的时候&#xff0c;大多使用的分页进行查询&#xff0c;但是当遇到特殊的产品需求&#xff0c;比如A类型数据&#xff0c;多条记录就显示多行&#xff0c;B类型的要求存在多条记录时&#xff0c;就进行汇总后只显示一条&#xff0c;这就导致无法使…

Oracle给表空间添加容量

假如给SYSTEM表空间添加 查看文件位置和容量&#xff1a;Select * FROM DBA_DATA_FILES; FILE_NAME就是要修改的文件 查看每一个表空间的容量&#xff0c;单位MB&#xff1a; SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces…

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据&#xff0c;然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力&#xff0c;数据分析BI&#xff08;商业智能&#xff09;成为了现代企业不可或缺的一部分。然而&#xff0c;在数据分析的背后&#xff0c;有…

详解多目标跟踪(MOT)算法中的Kalman滤波

Kalman滤波算法的原理可以参考&#xff1a; 卡尔曼滤波理解 以sort算法为例&#xff0c; 算法中使用到了卡尔曼滤波。 其作用是&#xff1a;通过t-1帧的结果&#xff0c; 通过卡尔曼滤波的predict过程得到目标在t帧的先验估计&#xff0c; 同时在t帧通过检测模型得到检测结果&…

【Linux网络】TCP UDP socket HTTP webSocket之间的区别

目录 一、OSI & TCP/IP模型 二、几者之间的关系 三、HTTP 四、Socket 五、WebSocket 5.1、WebSocket 优点 一、OSI & TCP/IP模型 首先我们要了解OSI七层模型&#xff0c;和预支对应的TCP/IP 四层的模型。 用下面的图可以看出&#xff0c;TCP UDP 工作在传输层&…

前端面试:【新技术与趋势】WebAssembly、Serverless、GraphQL

在不断演进的技术领域中&#xff0c;WebAssembly、Serverless和GraphQL都是备受关注的新技术和趋势。它们改变了软件开发、部署和数据传输的方式&#xff0c;为开发者提供了更多的选择和灵活性。 1. WebAssembly&#xff08;Wasm&#xff09;&#xff1a; 简介&#xff1a; Web…

Word导出创建Adobe PDF其中emf图片公式马赛克化及文字缺失

软件版本 Word 2021 Visio 2019 Adobe Acrobat Pro 2020 问题描述 公式马赛克化&#xff0c;是指在Word中使用MathType编辑的公式&#xff0c;然后在Visio中使用图片(增强型图元文件)形式得到的粘贴对象&#xff0c;效果如下 文字缺失&#xff0c;是指Word导出→创建Adobe P…

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法&#xff1a;2. 理解函数和模块&#xff1a;3. 深入数据结构&#xff1a;4. 高级特性和技巧&#xff1a;5. 实践项目&#xff1a; 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…

Hbase分布式安装

一、环境准备 启动zookeeper 启动hdfs 二、安装 上传安装包 1、解压 tar -zxf hbase-2.2.2-bin.tar.gz -C /opt/installs/2、更名 mv hbase-2.2.2/ hbase3、配置环境变量 [roothadoop11 conf]# vim /etc/profile export HBASE_HOME/opt/installs/hbase export PATH$PATH:$…

如何使用Linux文件系统?

为了让你更好地理解Linux文件系统&#xff0c;我要告诉你一些非常非常重要的知识点&#xff0c;确保你能够顺利地在这个庞大的世界中游走。 首先&#xff0c;你需要了解Linux中的基本概念。这个系统不像你的手机或者电脑&#xff0c;它是一个“文本”驱动的操作系统。这里的所…

Spring Boot中如何编写优雅的单元测试

单元测试是指对软件中的最小可测试单元进行检查和验证。在Java中&#xff0c;单元测试的最小单元是类。通过编写针对类或方法的小段代码&#xff0c;来检验被测代码是否符合预期结果或行为。执行单元测试可以帮助开发者验证代码是否正确实现了功能需求&#xff0c;以及是否能够…

vr内容编辑软件降低了虚拟现实项目开发门槛

VR虚拟场景编辑器是一种专门用于创建、修改和设计虚拟场景的工具。它利用vr虚拟现实技术&#xff0c;让用户可以在三维空间中直接对场景进行操作和编辑。这种编辑器的出现&#xff0c;使得用户可以更加直观、自由地进行场景设计和制作&#xff0c;为诸多领域带来了新的可能性。…

深入解析 Lambda 表达式

系列文章目录 文章目录 系列文章目录前言一、Lambda 表达式的基本概念二、Lambda 表达式的应用1.集合操作2.函数式接口3.线程操作三、Lambda 表达式 vs. 匿名类四、Lambda 表达式的局限性总结前言 Lambda表达式是Java 8引入的一项重要特性,它允许我们以更简洁、更紧凑的方式编…

Kafka生产者原理 kafka生产者发送流程 kafka消息发送到集群步骤 kafka如何发送消息 kafka详解

kafka尚硅谷视频&#xff1a; 10_尚硅谷_Kafka_生产者_原理_哔哩哔哩_bilibili ​ 1. producer初始化&#xff1a;加载默认配置&#xff0c;以及配置的参数&#xff0c;开启网络线程 2. 拦截器拦截 3. 序列化器进行消息key, value序列化 4. 进行分区 5. kafka broker集群 获取…

Linux常用命令——dhclient命令

在线Linux命令查询工具 dhclient 动态获取或释放IP地址 补充说明 dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数。 语法 dhclient(选项)(参数)选项 0&#xff1a;指定dhcp客户端监听的端口号&#xff1b; -d&#xff1a;总是以前台方式运行程序&#x…

SpringBoot案例-文件上传

目录 简介 文件上传前端页面三要素 服务端接收文件 小结 本地储存 实现 代码优化 小结 阿里云OSS 阿里云 阿里云OSS 使用第三方服务--通用思路 准备工作 参照官方SDK代码&#xff0c;编写入门程序 集成使用 阿里云OSS-使用步骤 阿里云OSS使用步骤 参照SDK编写入…

深层次分析字符数组和字符串的区别是什么?

前言 &#xff08;1&#xff09;休闲时刻刷B站&#xff0c;看到一个卖课的&#xff0c;发视频问&#xff0c;char arr1[]{‘H’,‘E’,‘L’,‘L’,‘O’};和char arr2[]“HELLO”;区别是什么。 &#xff08;2&#xff09;看那个卖课博主一顿分析&#xff0c;最后成功得出&…

IT运维:使用数据分析平台监控DELL服务器

概述 在企业日常运维中&#xff0c;我们有着大量的服务器设备&#xff0c;设备故障一般可以通过常用的监控软件实现自动告警&#xff0c;但如果在管理运维中我们要做的不仅仅是发现故障&#xff0c;处理硬件故障&#xff0c;我们还需要进一步的了解&#xff0c;今年一共出现了多…