File tree 1 file changed +14
-13
lines changed
scripts/algorithms/C/Count Good Meals
1 file changed +14
-13
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 216 ms (Top 89.74%) | Memory: 61.6 MB (Top 38.46%)
1
2
var countPairs = function ( deliciousness ) {
2
3
const n = deliciousness . length ;
3
4
const MOD = 1e9 + 7 ;
4
-
5
+
5
6
const map = new Map ( ) ;
6
-
7
+
7
8
for ( const num of deliciousness ) {
8
9
if ( ! map . has ( num ) ) map . set ( num , 0 ) ;
9
10
map . set ( num , map . get ( num ) + 1 ) ;
10
11
}
11
-
12
- let max = 2 ** 21 ;
12
+
13
+ let max = 2 ** 21 ;
13
14
let res = 0 ;
14
-
15
+
15
16
for ( const [ num , count ] of map ) {
16
17
17
18
let two = 1 ;
18
-
19
+
19
20
while ( two <= max ) {
20
21
const diff = two - num ;
21
-
22
+
22
23
if ( diff >= 0 && map . has ( diff ) ) {
23
-
24
+
24
25
const otherCount = map . get ( diff ) ;
25
-
26
+
26
27
if ( num != diff ) res += ( count * otherCount ) ;
27
28
else res += ( count * ( count - 1 ) / 2 ) ;
28
29
}
29
-
30
+
30
31
two <<= 1 ;
31
32
}
32
-
33
+
33
34
map . delete ( num ) ;
34
35
}
35
-
36
+
36
37
return res % MOD ;
37
- } ;
38
+ } ;
You can’t perform that action at this time.
0 commit comments