zoukankan      html  css  js  c++  java
  • LeetCode 1267 统计参与通信的服务器 Count Servers that Communicate

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

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

    算法1
    单独计算同行 同列的元素计数 大于等于2 则算作可互相通讯

    class Solution {
    public:
    
    set<vector<int>> resultSet;
    int countServers(vector<vector<int>>& grid) {
        for (int i = 0; i < grid.size(); i++) {
            int firstx = -1; int firsty = -1;
            for (int j = 0; j < grid[0].size(); j++) {
                if (grid[i][j] == 1) {
                    if (firstx == -1) {
                        firstx = i; firsty = j;
                    }
                    else {
                        vector<int>v1{ firstx, firsty };
                        resultSet.insert(v1);
                        vector<int>v2{ i, j };
                        resultSet.insert(v2);
                    }
                }
            }
        }
    
        for (int y = 0; y < grid[0].size(); y++) {
            int firstx = -1; int firsty = -1;
            for (int x = 0; x < grid.size(); x++) {
                if (grid[x][y] == 1) {
                    if (firstx == -1) {
                        firstx = x; firsty = y;
                    }
                    else {
                        vector<int>v1{ firstx, firsty };
                        resultSet.insert(v1);
                        vector<int>v2{ x, y };
                        resultSet.insert(v2);
    
                    }
                }
            }
        }
    
        return resultSet.size();
    }
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    double保存小数点后两位
    二维数组做函数参数,及地址问题
    解决应用程序无法正常启动0xcxxxxxxxxxx问题
    docker+selenium grid解决node执行经常卡死
    docker+selenium Grid搭建自动化分布式测试环境
    Docker+Selenium Grid+Python搭建分布式测试环境
    xshell无法连接Ubuntu的解决办法
    docker获取镜像很慢解决办法
    django使用ajax传输数据
    $.ajax()所有参数详解
  • 原文地址:https://www.cnblogs.com/itdef/p/11922583.html
Copyright © 2011-2022 走看看