@@ -10,26 +10,21 @@ public class Solution {
1010 public int [] countPairs (int n , int [][] edges , int [] queries ) {
1111 Map <Integer , Integer > edgeCount = new HashMap <>();
1212 int [] degree = new int [n ];
13-
1413 for (int [] e : edges ) {
1514 int u = e [0 ] - 1 ;
1615 int v = e [1 ] - 1 ;
1716 degree [u ]++;
1817 degree [v ]++;
19-
2018 int eId = Math .min (u , v ) * n + Math .max (u , v );
2119 edgeCount .put (eId , edgeCount .getOrDefault (eId , 0 ) + 1 );
2220 }
23-
2421 Map <Integer , Integer > degreeCount = new HashMap <>();
2522 int maxDegree = 0 ;
2623 for (int d : degree ) {
2724 degreeCount .put (d , degreeCount .getOrDefault (d , 0 ) + 1 );
2825 maxDegree = Math .max (maxDegree , d );
2926 }
30-
3127 int [] count = new int [2 * maxDegree + 1 ];
32-
3328 for (Map .Entry <Integer , Integer > d1 : degreeCount .entrySet ()) {
3429 for (Map .Entry <Integer , Integer > d2 : degreeCount .entrySet ()) {
3530 count [d1 .getKey () + d2 .getKey ()] +=
@@ -41,19 +36,15 @@ public int[] countPairs(int n, int[][] edges, int[] queries) {
4136 for (int i = 0 ; i < count .length ; i ++) {
4237 count [i ] /= 2 ;
4338 }
44-
4539 for (Map .Entry <Integer , Integer > e : edgeCount .entrySet ()) {
4640 int u = e .getKey () / n ;
4741 int v = e .getKey () % n ;
48-
4942 count [degree [u ] + degree [v ]]--;
5043 count [degree [u ] + degree [v ] - e .getValue ()]++;
5144 }
52-
5345 for (int i = count .length - 2 ; i >= 0 ; i --) {
5446 count [i ] += count [i + 1 ];
5547 }
56-
5748 int [] res = new int [queries .length ];
5849 for (int q = 0 ; q < queries .length ; q ++) {
5950 res [q ] = ((queries [q ] + 1 ) >= count .length ) ? 0 : count [queries [q ] + 1 ];
0 commit comments