今日题目

https://leetcode.com/problems/count-servers-that-communicate/

思路

按题目要求模拟即可。

方法

先统计每行和每列中服务器的数量,再判断每台服务器是否有与其同行或同列的其他服务器。

复杂度

  • 时间复杂度:$O(NM)$,N、M 分别为网格的行数和列数。

  • 空间复杂度:$O(NM)$

代码

class Solution:
    def countServers(self, grid: List[List[int]]) -> int:
        cntR = [0] * len(grid)
        cntC = [0] * len(grid[0])
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]:
                    cntR[i] += 1
                    cntC[j] += 1
        
        ans = 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] and (cntR[i] > 1 or cntC[j] > 1):
                    ans += 1
        return ans