【LeetCode1】统计参与通信的服务器

【题目】

  • 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。
  • 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。
  • 请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。

【示例一】

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

【示例二】

  • 输入:grid = [[1,0],[1,1]]
  • 输出: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

【解答】

【1】精简版

def index(grid): for i, r in enumerate(grid): if sum(r) > 1: grid[i] = [2 if x else 0 for x in r] return sum(sum(x > 0 for x in c) for c in zip(*grid) if sum(c) > 1) if __name__ == '__main__': grid = [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1]] res = index(grid) print(res)
  • 输出结果
4

【2】拆分版

def index(grid): # 遍历二维网络的每一行 for i, r in enumerate(grid): # 判断当前行是否有多于1台服务器 if sum(r) > 1: # 如果当前行有多于1台服务器,将该行的所有1替换为2,表示特定行的服务器数量为2 grid[i] = [2 if x else 0 for x in r] print(grid) # [[2, 2, 0, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1]] # 汇总满足条件的服务器数量 count = 0 # 将二维网络进行转置,即将行转换为列,方便计算列条件 transposed_grid = zip(*grid) # print('transposed_grid', list(transposed_grid)) # [(2, 0, 0, 0), (2, 0, 0, 0), (0, 1, 1, 0), (0, 0, 0, 1)] # 遍历转置后的每一列 for c in transposed_grid: # 判断当前列是否有多于1台服务器 if sum(c) > 1: # 对于满足条件的列,统计大于0的元素数量,即满足条件的服务器数量 count += sum(x > 0 for x in c) print(f'当前列表 {c} 当前 计数 {count}') # 返回满足条件的服务器数量 return count if __name__ == '__main__': grid = [[1, 1, 0, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1]] res = index(grid) print(res)
  • 输出结果
[[2, 2, 0, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 当前列表 (2, 0, 0, 0) 当前 计数 1 当前列表 (2, 0, 0, 0) 当前 计数 2 当前列表 (0, 1, 1, 0) 当前 计数 4 4

__EOF__

本文作者Chimengmeng
本文链接https://www.cnblogs.com/dream-ze/p/17654939.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Chimengmeng  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示