題目
這裡有一幅伺服器分佈圖,伺服器的位置標識在 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
解題思路分析1、遍歷;時間複雜度O(n^2),空間複雜度O(n)
func countServers(grid [][]int) int { a := make(map[int]int) // 行 b := make(map[int]int) // 列 for i := 0; i < len(grid); i++ { for j := 0; j < len(grid[i]); j++ { if grid[i][j] == 1 { a[i]++ b[j]++ } } } res := 0 for i := 0; i < len(grid); i++ { for j := 0; j < len(grid[i]); j++ { if grid[i][j] == 1 && (a[i] > 1 || b[j] > 1) { res++ } } } return res}
總結
Medium題目,統計每行每列1的個數,然後第二次遍歷判斷即可
最新評論