【每日一题】1267. 统计参与通信的服务器

这篇具有很好参考价值的文章主要介绍了【每日一题】1267. 统计参与通信的服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

题目描述

这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。

如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。

请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。

示例 1:

【每日一题】1267. 统计参与通信的服务器,每日一题,服务器,运维

输入:grid = [[1,0],[0,1]]
输出:0
解释:没有一台服务器能与其他服务器进行通信。

示例 2:

【每日一题】1267. 统计参与通信的服务器,每日一题,服务器,运维

输入:grid = [[1,0],[1,1]]
输出:3
解释:所有这些服务器都至少可以与一台别的服务器进行通信。

示例 3:

【每日一题】1267. 统计参与通信的服务器,每日一题,服务器,运维

输入: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

解题思路

思路:如果直接遍历二维数组时再分别对每一项分别遍历行或者列进而判断是否能够参与通信的时间复杂度较高,故此时选择对于是否能够参与通信进行预处理,即分别使用行数组row存储每一行是否能够参与通信、使用列数组col存储每一列是否能够参与通信,其中每一行或者每一列是否能够参与通信的条件是为1的数量大于等于2。

class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        // 数据预处理
        int m=grid.size();
        int n=grid[0].size();
        // 分别统计行和列
        vector<bool> row(m,false);
        vector<bool> col(n,false);
        // 遍历gird 统计行
        for(int i=0;i<m;i++)
        {
            // 记录每行数量
            int num=0;
            for(int j=0;j<n;j++)
            {
                if(grid[i][j]==1)
                    num++;
            }
            if(num>=2)
            row[i]=true;
        }
        // 遍历gird 统计列
        for(int i=0;i<n;i++)
        {
            // 记录每列数量
            int num=0;
            for(int j=0;j<m;j++)
            {
                if(grid[j][i]==1)
                    num++;
            }
            if(num>=2)
            col[i]=true;
        }
        int res=0;
        // 遍历grid
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(grid[i][j]==1&&(row[i]||col[j]))
                    res++;
            }
        }
        return res;
    }
};
class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        // 数据预处理
        int m=grid.size();
        int n=grid[0].size();
        // 分别统计行和列
        vector<int> row(m,0);
        vector<int> col(n,0);
        // 遍历gird 统计行
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(grid[i][j]==1)
                {
                    row[i]++;
                    col[j]++;
                }
            }
        }
        int res=0;
        // 遍历grid
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(grid[i][j]==1&&(row[i]>=2||col[j]>=2))
                    res++;
            }
        }
        return res;
    }
};

总结:第一次使用的数组是bool类型,这样需要三次遍历;第二次使用的数组是int类型,这样只需要两次遍历。文章来源地址https://www.toymoban.com/news/detail-672804.html

到了这里,关于【每日一题】1267. 统计参与通信的服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【力扣每日一题】2023.8.24 统计参与通信的服务器

    目录 题目: 示例: 分析: 代码: 题目顾名思义,要我们统计参与通信的服务器,给我们一个二维矩阵,元素为1的位置则表示是一台服务器。 判断一台服务器是否参与通信的条件是同一列或是同一行中也有服务器。 那么我们只需要遍历整个矩阵,遇到服务器的时候我们进

    2024年02月11日
    浏览(33)
  • 【1267. 统计参与通信的服务器】

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

    2024年02月11日
    浏览(38)
  • LeetCode 1267. 统计参与通信的服务器

    力扣题目链接:https://leetcode.cn/problems/count-servers-that-communicate/ 这里有一幅服务器分布图,服务器的位置标识在  m * n  的整数矩阵网格  grid  中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并

    2024年02月11日
    浏览(34)
  • LC-1267. 统计参与通信的服务器(枚举 + 计数)

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

    2024年02月11日
    浏览(30)
  • ​LeetCode解法汇总1267. 统计参与通信的服务器

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

    2024年02月11日
    浏览(42)
  • 每日一题——1295.统计位数为偶数的数字

    方法一 个人方法: 想知道整数型数字有多少位,可以直接把数字转字符,看字符的长度就是数字的位数  消耗时间和内存情况: 方法二 枚举法 题目给出的nums[i]范围不大,数字位数为偶数位则只能是2、4、6位,分别代表数据范围为 10-99、1000-9999、100000,则可以直接判断数字

    2024年01月22日
    浏览(35)
  • 每日一题 第五十七期 洛谷 统计子矩阵

    给定一个 N × M N times M N × M 的矩阵 A A A ,请你统计有多少个子矩阵 (最小 1 × 1 1 times 1 1 × 1 , 最大 N × M ) N times M) N × M ) 满足子矩阵中所有数的和不超过给定的整数 K K K 。 第一行包含三个整数 N , M N, M N , M 和 K K K 。 之后 N N N 行每行包含 M M M 个整数, 代表矩阵 A A A 。 一

    2024年04月23日
    浏览(39)
  • 2023-08-23 LeetCode每日一题(统计点对的数目)

    点击跳转到题目位置 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成,其中 edges[i] = [u i , v i ] 表示 u i 和 v i 之间有一条无向边。同时给你一个代表查询的整数数组 queries 。 第 j 个查询的答案是满足如下条件的点对 (a, b) 的数目: a b cnt 是与 a 或者 b

    2024年02月11日
    浏览(55)
  • 【Hive SQL 每日一题】统计用户连续下单的日期区间

    测试数据 需求说明 统计用户连续下单的日期区间,所以连续的下单日期必须 = 2 ,例如: 2023-01-01,2023-01-02 。 分析步骤如下: 按 user_id 、 order_date 进行分组,同天的下单日期只保留一条。 使用 row_number 窗口函数对行号进行标记。 使用 date_sub 函数与行号标记进行运算,如果

    2024年02月09日
    浏览(36)
  • 力扣每日一题--2088. 统计农场中肥沃金字塔的数目

    看到这道题有些人很容易放弃,其实这道题不是很难,主要是题目长,读的容易让人放弃,但是 只要抓住一些性质就可以解决该问题。     本题中的定义放到图像里其实就是个金字塔,下层的那部分比上一层的那部分,长度加2, 并且该层那个长度区间内都是1才行。是个金

    2024年01月18日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包