Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

统计参与通信的服务器 #164

Open
yankewei opened this issue Aug 24, 2023 · 1 comment
Open

统计参与通信的服务器 #164

yankewei opened this issue Aug 24, 2023 · 1 comment
Labels
中等 题目难度为中等 数组 题目类型为数组

Comments

@yankewei
Copy link
Owner

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

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

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

示例 1:

示例1

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

示例 2:

示例2

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

示例 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
@yankewei yankewei added 中等 题目难度为中等 数组 题目类型为数组 labels Aug 24, 2023
@yankewei
Copy link
Owner Author

PHP

比较简单的模拟题,两次遍历,第一次把每一行和每一列总共有多少个 1 算出来就可以,第二次计算结果,这里要注意不能把自己算进去

class Solution {

    /**
     * @param Integer[][] $grid
     * @return Integer
     */
    function countServers($grid) {
        $row = [];
        $column = [];

        foreach ($grid as $row_index => $rows) {
            $row[$row_index] = 0;

            foreach ($rows as $column_index => $item) {
                if (!array_key_exists($column_index, $column)) {
                    $column[$column_index] = 0;
                }
                if ($item === 1) {
                    $row[$row_index]++;
                    $column[$column_index]++;
                }
            }
        }

        $ret = 0;

        foreach ($grid as $row_index => $rows) {
            foreach ($rows as $column_index => $value) {
                if ($value === 1 && ($row[$row_index] > 1 || $column[$column_index] > 1)) {
                    $ret++;
                }
            }
        }

        return $ret;
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
中等 题目难度为中等 数组 题目类型为数组
Projects
None yet
Development

No branches or pull requests

1 participant