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驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    深入学习SlidingMenu 2015-06-12 20:27 856人阅读 评论(0) 收藏
    Android 判断SD卡是否存在及容量查询
    第三方登录,授权,分享
    GLSurfaceView用法详解
    Java/android面试题
    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
    填充数字以达到位数
    web api post
    .net测试方法效率获取系统当前时间
    vs2012更新问题
  • 原文地址:https://www.cnblogs.com/itdef/p/11922583.html
Copyright © 2011-2022 走看看