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

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

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

力扣题目链接:https://leetcode.cn/problems/count-servers-that-communicate/

这里有一幅服务器分布图,服务器的位置标识在 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

方法一:计数

假设 g i r d gird gird s i z e size size n × m n\times m n×m,开辟两个数组 r o w [ n ] row[n] row[n] c o l [ m ] col[m] col[m],分别记录某行服务器个数 和 某列的服务器个数。

遍历一遍地图矩阵 g r i d grid grid,若此处有服务器(server) 且 此行或此列不只一台服务器,则 a n s + + ans++ ans++

  • 时间复杂度 O ( n × m ) O(n\times m) O(n×m)
  • 空间复杂度 O ( n + m ) O(n + m) O(n+m)

AC代码

C++

class Solution {
public:int countServers(vector<vector<int>>& grid) {int n = grid.size(), m = grid[0].size();vector<int> row(n), col(m);for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {row[i] += grid[i][j], col[j] += grid[i][j];}}int ans = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {ans += grid[i][j] * (row[i] > 1 || col[j] > 1);}}return ans;}
};

Python

# from typing import Listclass Solution:def countServers(self, grid: List[List[int]]) -> int:n, m = len(grid), len(grid[0])col, row = [0] * n, [0] * mfor i in range(n):for j in range(m):col[i] += grid[i][j]row[j] += grid[i][j]ans = 0for i in range(n):for j in range(m):ans += grid[i][j] * (col[i] > 1 or row[j] > 1)return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132466649

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

相关文章:

  • 169. 多数元素(哈希表)
  • 微服务集成spring cloud sentinel
  • 2023年最新版Windows环境下|Java8(jdk1.8)安装教程
  • linux -- jdk 的安装
  • 网络安全—黑客技术(学习笔记)
  • Java入职第十一天,深入了解静态代理和动态代理(jdk、cglib)
  • Snappy算法:高速压缩和解压缩技术的顶尖玩家
  • Python中的format()函数详细讲解
  • 11. 盛最多水的容器(c++题解)
  • 历史最佳二季度表现后,爱奇艺想为用户提供更多价值
  • HDLBits-Verilog学习记录 | Verilog Language-Basics(2)
  • Ubuntu22.0网络/网卡丢失
  • Linux 常用
  • AWS 提示证书签名过期无法自动更新
  • Git版本管理(01) 简介 基本提交相关命令
  • 解决 vue项目报错:digital envelope routines::unsupported
  • 【Java基础增强】类加载器和反射
  • 【Java】数据类型变量
  • 护目镜佩戴检测识别算法
  • NOIOLPJ2022B. 数学游戏 分析
  • android studio gradle build running慢 卡住不动 失败 原因与解决方式
  • 如何保障Facebook账号登录稳定
  • 当前目录下的excel文件的两列内容的相似度比较
  • Cookie for Mac:隐私保护工具保护您的在线隐私
  • Huggingface训练Transformer
  • IA-YOLO项目中DIP模块的初级解读
  • MathType7.4mac最新版本数学公式编辑器安装教程
  • 为Claude的分析内容做准备:提取PDF页面内容的简易应用程序
  • js中作用域的理解?
  • 机器学习基础之《分类算法(4)—案例:预测facebook签到位置》