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

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

目录

题目:

示例:

分析:

代码:


题目:

【力扣每日一题】2023.8.24 统计参与通信的服务器,力扣每日一题,leetcode,算法,c++,数据结构

示例:

【力扣每日一题】2023.8.24 统计参与通信的服务器,力扣每日一题,leetcode,算法,c++,数据结构

分析:

题目顾名思义,要我们统计参与通信的服务器,给我们一个二维矩阵,元素为1的位置则表示是一台服务器。

判断一台服务器是否参与通信的条件是同一列或是同一行中也有服务器。

那么我们只需要遍历整个矩阵,遇到服务器的时候我们进入一个判断,如果同一行或是同一列中也有服务器,那么我们就认为这台服务器是参与通信的服务器,最后将统计结果返回即可。

也就是说这道题纯暴力也能轻松通过,甚至运行时间还超过了86%

【力扣每日一题】2023.8.24 统计参与通信的服务器,力扣每日一题,leetcode,算法,c++,数据结构

 这也和数据量比较小有关,矩阵不会超过250*250。

 【力扣每日一题】2023.8.24 统计参与通信的服务器,力扣每日一题,leetcode,算法,c++,数据结构

 如果数据量更大的情况,我们就可以进行一个优化,在遇到了同一列或是同一行的服务器时,我们将其位置修改为非1非0的值来表示这个位置是有服务器的,不过我们已经统计过了。这样在矩阵中遍历到这个位置时,就会因为这个位置的元素不为1而跳过,从而减少遍历次数。

不过在这数据量较小的情况下,因为需要一多些判断,所以运行速度反而更慢一些。

两种方法的代码可以参考下面。文章来源地址https://www.toymoban.com/news/detail-671679.html

代码:

class Solution {
public:
    //方法1
    bool check(vector<vector<int>>& grid,int i,int j){
        for(int ii=0;ii<grid.size();ii++){  //检查同一列
            if( grid[ii][j] == 1 && ii != i ) return true;
        }
        for(int jj=0;jj<grid[0].size();jj++){   //检查同一行
            if( grid[i][jj] == 1 && jj != j ) return true;
        }
        return false;
    }
    int countServers(vector<vector<int>>& grid) {
        int res=0;
        for(int i=0;i<grid.size();i++){
            for(int j=0;j<grid[0].size();j++){
                if( grid[i][j] == 1 && check(grid,i,j)) res++;
            }
        }
        return res;
    }

    //方法2
    int res=0;
    void check1(vector<vector<int>>& grid,int i,int j){
        bool flag=false;
        for(int ii=0;ii<grid.size();ii++){  //检查同一列
            if( grid[ii][j] == 1 && ii != i ){
                flag=true;
                res++;
                grid[ii][j]=2;
            }
            if(grid[ii][j]==2) flag=true;
        }
        for(int jj=0;jj<grid[0].size();jj++){   //检查同一行
            if( grid[i][jj] == 1 && jj != j ){
                flag=true;
                res++;
                grid[i][jj]=2;
            }
            if(grid[i][jj]==2) flag=true;
        }
        if(flag) res++;
    }
    int countServers(vector<vector<int>>& grid) {
        for(int i=0;i<grid.size();i++){
            for(int j=0;j<grid[0].size();j++){
                if( grid[i][j] == 1 ) check1(grid,i,j);
            }
        }
        return res;
    }
};

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

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

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

相关文章

  • Leetcode每日一题:1267. 统计参与通信的服务器

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

    2024年02月10日
    浏览(28)
  • 2023-08-24力扣每日一题

    链接: 1267. 统计参与通信的服务器 题意: 同行同列可以发生通信,求能发生通信的机器数量 解: 标记每行/每列的机器个数即可 实际代码: 限制: m == grid.length n == grid[i].length 1 = m = 250 1 = n = 250 grid[i][j] == 0 or 1

    2024年02月11日
    浏览(33)
  • 【力扣每日一题】2023.7.24 宝石与石头

    目录 题目: 示例: 分析: 代码+运行结果: 给我们一个字符串表示宝石的类型,再给我们一个字符串表示我们已经拥有的石头,问我们在石头中能找到多少宝石。 一开始我以为第一个字符串表示一个宝石,结果看看示例,是第一个字符串中每个单独的字符都是表示宝石的。

    2024年02月15日
    浏览(26)
  • Leetcode每日一题:1782. 统计点对的数目(2023.8.24 C++)

    目录 1782. 统计点对的数目 题目描述: 实现代码与解析: hash + 双指针 原理思路:         给你一个无向图,无向图由整数  n   ,表示图中节点的数目,和  edges  组成,其中  edges[i] = [ui, vi]  表示  ui  和  vi  之间有一条无向边。同时给你一个代表查询的整数数组 

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

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

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

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

    2024年02月11日
    浏览(24)
  • LeetCode 每日一题 2023/7/24-2023/7/30

    记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 7/24 771. 宝石与石头 将宝石类型放入set中 一次判断石头中宝石个数 7/25 2208. 将数组和减半的最少操作次数 大顶堆记录当前最大值 每次取最大值减半 7/26 2569. 更新数组后处理求和查询

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

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

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

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

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

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

    2024年02月11日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包