每日一题:leetcode 1267 统计参与通信的服务器

news/2025/1/15 15:37:54/

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

思路:

暴力遍历。。。。(我这种肯定不是最优的)

先按行遍历,如果出现第一个,先记录位置,然后看看有没有第二个的出现。

ac code:

class Solution {public int countServers(int[][] grid) {int ans = 0;int n = grid.length;int m = grid[0].length;boolean[][] vis = new boolean[n][m];for (int i = 0;i<n;i++) {int flag = 0;int firstX = -1;int firstY = -1;for (int j =0;j<m;j++) {if (grid[i][j] == 1) {if (flag > 1) {ans += 1;vis[i][j] = true;} else if (flag == 1) {ans += 2;vis[i][j] = true;vis[firstX][firstY] = true;} else {firstX = i;firstY = j;}flag += 1;}}}for (int i=0;i<m;i++) {int flag = 0;int firstX = -1;int firstY = -1;for (int j=0;j<n;j++) {if (grid[j][i] == 1) {if (flag > 1) {ans += (vis[j][i] ? 0 : 1);vis[j][i] = true;} else if (flag == 1) {ans += (vis[j][i] ? 0 : 1);ans += (vis[firstX][firstY] ? 0 : 1);vis[j][i] = true;vis[firstX][firstY] = true;} else {firstX = j;firstY = i;}flag += 1;}}}return ans;}
}

还有更优的,比如可以通过hashmap去记录行列是否出现,或者是通过一维数组+一个变量去记录,放一个更优的解法。

class Solution:def countServers(self, grid: List[List[int]]) -> int:m,n=len(grid),len(grid[0])col_alone=[-1]*nans=0for i in range(m):row_alone=-1for j in range(n):if grid[i][j]==0:continueif row_alone==-1 and col_alone[j]==-1:##同行同列没有服务器row_alone=jcol_alone[j]=ielse:if row_alone>=0:ans+=1col_alone[row_alone]=-2ans+=(col_alone[j]>=0)+1row_alone=-2col_alone[j]=-2return ans


http://www.ppmy.cn/news/1070692.html

相关文章

ios点击可点击元素时会出现浅色背景解决方法

最近来开发移动端的项目时&#xff0c;发现在ios的设备中如果有点击事件的元素时&#xff0c;点击该元素时会出现一个浅色的背景。去除的方法也很简单&#xff0c;给这个元素设置一个css即可解决。 -webkit-tap-highlight-color: transparent !important;

基于SpringBoot的员工(人事)管理系统

基于SpringBoot的员工&#xff08;人事&#xff09;管理系统 一、系统介绍二、功能展示三.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于SPringBoot的员工管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 前端技术&#xff1a;BootS…

MySQL 基本操作

目录 数据库的列类型 数据库基本操作 SQL语言规范 SQL语句分类 查看表&#xff0c;使用表 管理数据库 创建数据库和表 删除数据库和表 向数据表中添加数据 查询数据表中数据 修改数据表的数据 删除数据表中数据 修改表明和表结构 扩展表结构&#xff08;增加字段&…

【C++入门】模版初阶(泛型编程)

目录 1.泛型编程2.函数模版2.1函数模版的概念2.2函数模版的使用2.3函数模版的原理2.4函数模版的实例化2.5 模板参数的匹配原则 3.类模版3.1类模版的定义格式3.2类模版的实例化 1.泛型编程 让我们思考一个小问题&#xff1a;如何实现一个通用的交换函数呢&#xff1f; 在解决这…

工地扬尘监测系统 yolo

工地扬尘监测系统算法能够通过yolo网络框架模型&#xff0c;工地扬尘监测系统算法自动对区域的扬尘、粉尘颗粒进行实时监测识别&#xff0c;并及时进行预警&#xff0c;有效防止扬尘污染。Yolo意思是You Only Look Once&#xff0c;它并没有真正的去掉候选区域&#xff0c;而是…

OpenGL之画三角形

OpenGL之画三角形 openGL具有很多扩展&#xff0c;方便进行操作 确保已经安装必要的库&#xff0c;进行正确的链接 glut #include <GL/glut.h>void display() {glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色glVe…

2023 天府杯“ 室温超导+可再生能源应用国赛预测模拟专题赛“——参考代码答案与解析

室温超导材料在可再生能源传输中的应用研究 题目要求&#xff1a; 假设某国家有多个可再生能源发电站点&#xff0c;分布在不同的地理位置。每个发电站点产生的能量大小和时间段都有所不同。同时&#xff0c;假设已经研发出室温超导材料 LK-6&#xff0c;LK-66&#xff0c;L…

cmd: Union[List[str], str], ^ SyntaxError: invalid syntax

跑项目在调用from easyprocess import EasyProcess 遇到报错&#xff1a; cmd: Union[List[str], str], ^ SyntaxError: invalid syntax猜测是EasyProcess版本与python版本不对应 pip show EasyProcess查证一下&#xff1a; WARNING: pip is being invoked by an old…