Leetcode 5272:统计参与通信的服务器

该博客介绍了LeetCode的一道题目,要求统计在m*n的网格中,能够与其他服务器通信的服务器数量。网格中1表示有服务器,0表示无服务器。若在同一行或同一列,则两服务器可以通信。示例展示了不同情况下的通信服务器数量,并给出了问题的来源和链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-servers-that-communicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

解题思路

class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        int ans = 0;
        vector<int> dx = {-1,0,1,0};
        vector<int> dy = {0,-1,0,1};
        int m = grid.size(),n = grid[0].size();
        for(int i=0;i<m;++i){
            for(int j=0;j<n;++j){
                if(grid[i][j]==0) continue;
                int flag = 0;
                for(int k=0;k<4;++k){
                    int x = i+dx[k];
                    int y = j+dy[k];
                    while(x>=0&&x<m&&y>=0&&y<n){
                        if(grid[x][y] == 1){
                            flag = 1;
                            break;
                        }
                        x += dx[k];
                        y += dy[k];
                    }
                    if(flag == 1) break;
                }
                ans += flag;
            }
        }
        return ans;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值