1267. 统计参与通信的服务器

题目描述:

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

示例:

1267. 统计参与通信的服务器_第1张图片
1267. 统计参与通信的服务器_第2张图片
1267. 统计参与通信的服务器_第3张图片

解题思路:

统计每行服务器个数,大于1直接添加到总数,若为1,查询该列是否存在另外至多一台服务器,若有,总数加一,若无,不操作。

相关代码:

class Solution {
    public int countServers(int[][] grid) {
        int count=0,sum=0;
        for(int i=0;i<grid.length;i++) {
            count=0;
            for(int j=0;j<grid[i].length;j++) {
                if(grid[i][j]!=0) {
                    count++;
                }
            }
            if(count==1) {
                for(int j=0;j<grid[i].length;j++) {
                    if(grid[i][j]!=0) {
                        for(int z=0;z<grid.length;z++) {
                            if(grid[z][j]==1&&z!=i) count++;
                        }
                        break;
                    }
                }
                if(count==1) count=0;
                else count=1;
            }
            if(count>0) {
                sum+=count;
            }
        }
        return sum;
    }
}

代码效率:

1267. 统计参与通信的服务器_第4张图片

你可能感兴趣的:(#,每日1题,数据结构,java,算法,leetcode,笔记)