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

题目描述

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

思路分析

解法一:行列计数(推荐)

核心思路

  • 先统计每行、每列的服务器数量。
  • 再遍历网格,若当前位置为 1 且行或列数量 > 1,则计入结果。


复杂度分析

  • 时间复杂度:O(mn),其中 m、n 表示网格行列数。
  • 空间复杂度:O(m+n),用于存储行列计数。
class Solution {
    public int countServers(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;

        int[] row = new int[m];
        int[] col = new int[n];

        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;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 1 && (row[i] > 1 || col[j] > 1)) {
                    res++;
                }
            }
        }

        return res;
    }
}
func countServers(grid [][]int) int {
	m := len(grid)
	n := len(grid[0])
	row := make([]int, m)
	col := make([]int, n)

	for i := 0; i < m; i++ {
		for j := 0; j < n; j++ {
			if grid[i][j] == 1 {
				row[i]++
				col[j]++
			}
		}
	}

	res := 0
	for i := 0; i < m; i++ {
		for j := 0; j < n; j++ {
			if grid[i][j] == 1 && (row[i] > 1 || col[j] > 1) {
				res++
			}
		}
	}

	return res
}

相似题目

题目 难度 考察点
1267. 统计参与通信的服务器 简单 行列统计
463. 岛屿的周长 简单 网格
200. 岛屿数量 中等 DFS
695. 岛屿的最大面积 中等 DFS
1277. 统计全为 1 的正方形子矩阵 中等 DP
本文作者:
本文链接: https://hgnulb.github.io/blog/2023/58293090
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!