Count Servers that Communicate
给一个2d的0,1数组, 每个点表示一个服务器, 它的列和行上有其他服务器就Communicate, 问有多少个. 先记录一下每行有几个, 每列有几个, 然后就直接写就出来了.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Solution { public int countServers(int[][] grid) { int count = 0; int n = grid.length; int m = grid[0].length; int[] r = new int[n]; // count the number of 1 in each row int[] c = new int[m]; // count the number of 1 in each col for(int i = 0 ; i < n; i++) { for(int j = 0; j < m; j++) { if(grid[i][j] == 1) { r[i] ++; c[j] ++; } } } for(int i = 0 ; i < n; i++) { for(int j = 0; j < m; j++) { if(grid[i][j] == 1) { if(r[i] > 1 || c[j] > 1) // if it is not alone count++; } } } return count; } } |