LeetCode 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 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!