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

每日一题:leetcode 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

思路:

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

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

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.lryc.cn/news/145364.html

相关文章:

  • Unity打包Windows程序,概率性出现无法全屏或分辨率不匹配
  • 消息中间件 介绍
  • JAVA-字符串长度
  • [oneAPI] 基于BERT预训练模型的SWAG问答任务
  • 如何为winform控件注册事件
  • 【LeetCode-面试经典150题-day15】
  • git查看和修改项目远程仓库地址
  • JavaWeb 速通JSON
  • 20 MySQL(下)
  • 测试圈的网红工具:Jmeter到底难在哪里?!
  • 深度学习10:Attention 机制
  • 简单着色器编写(中下)
  • matlab使用教程(24)—常微分方程(ODE)求解器
  • 企业级数据共享规模化模式
  • Web服务器-Tomcat详细原理与实现
  • ARM处理器核心概述
  • 万户协同办公平台 ezoffice存在未授权访问漏洞 附POC
  • 使用ctcloss训练矩阵生成目标字符串
  • 驱动 - 20230829
  • 数组(个人学习笔记黑马学习)
  • layui表格事件分析实例
  • Android NDK JNI与Java的相互调用
  • 装备制造企业如何执行精益管理?
  • PHP8中自定义函数-PHP8知识详解
  • 虚拟化技术:云计算发展的核心驱动力
  • 光伏+旅游景区
  • 手搓文本向量数据库(自然语言搜索生成模型)
  • EVO大赛是什么
  • linux中使用clash代理
  • Kafka3.0.0版本——Follower故障处理细节原理