目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
描述:
这里有一幅服务器分布图,服务器的位置标识在 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
解题思路:
* 解题思路:
* 先跑一轮,看一下那些行和列是有多个的。文章来源:https://www.toymoban.com/news/detail-671305.html
* 然后跑第二轮,找到那些可通讯的文章来源地址https://www.toymoban.com/news/detail-671305.html
代码:
class Solution1267
{
public:
int countServers(vector<vector<int>> &grid)
{
vector<int> xLine(grid[0].size());
vector<int> yLine(grid.size());
for (int y = 0; y < grid.size(); y++)
{
for (int x = 0; x < grid[y].size(); x++)
{
if (grid[y][x] == 0)
{
continue;
}
yLine[y]++;
xLine[x]++;
}
}
int num = 0;
for (int y = 0; y < grid.size(); y++)
{
for (int x = 0; x < grid[y].size(); x++)
{
if (grid[y][x] == 0)
{
continue;
}
if (yLine[y] > 1)
{
num++;
continue;
}
if (xLine[x] > 1)
{
num++;
}
}
}
return num;
}
};
到了这里,关于LeetCode解法汇总1267. 统计参与通信的服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!