网站开发案例pdf,爱链接,平台创建,网站开发 软件开发统计参与通信的服务器【LC1267】 这里有一幅服务器分布图#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中#xff0c;1 表示单元格上有服务器#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列#xff0c;我们就认为它们之间可以进行通信。 请你统…统计参与通信的服务器【LC1267】 这里有一幅服务器分布图服务器的位置标识在 m * n 的整数矩阵网格 grid 中1 表示单元格上有服务器0 表示没有。 如果两台服务器位于同一行或者同一列我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。 思路 使用哈希表记录能与至少一台其他服务器进行通信的服务器坐标那么最终结果即为哈希表的大小。 首先按行遍历元素找到能与同行服务器通信的服务器坐标记录前一个服务器的坐标如果不为-1那么将前一个服务器和当前服务器添加至结果集然后按列遍历元素找到能与同列服务器通信的服务器坐标流程同上 实现 class Solution {public int countServers(int[][] grid) {int m grid.length, n grid[0].length;SetInteger set new HashSet();for (int i 0; i m; i){int pre -1;for (int j 0; j n; j){if (grid[i][j] 1){if (pre ! -1){set.add(pre);set.add(i * n j);}pre i * n j;}}}for (int j 0; j n; j){int pre -1;for (int i 0; i m; i){if (grid[i][j] 1){if (pre ! -1){set.add(pre);set.add(i * n j);}pre i * n j;}}}return set.size();}
}复杂度 时间复杂度 O ( n ∗ m ) O(n*m) O(n∗m)空间复杂度 O ( n ∗ m ) O(n*m) O(n∗m) 实现 先遍历一遍矩阵统计每行每列的服务器个数然后再遍历一遍矩阵如果该行或者该列服务器个数大于1那么数量1 class Solution {public int countServers(int[][] grid) {int m grid.length, 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 ans 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)) {ans;}}}return ans;}
}作者ylb
链接https://leetcode.cn/problems/count-servers-that-communicate/solutions/2402089/python3javacgotypescript-yi-ti-yi-jie-ji-arec/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。复杂度 时间复杂度 O ( n ∗ m ) O(n*m) O(n∗m)空间复杂度 O ( n m ) O(nm) O(nm)