File tree Expand file tree Collapse file tree 1 file changed +13
-11
lines changed
minimum-absolute-difference-queries Expand file tree Collapse file tree 1 file changed +13
-11
lines changed Original file line number Diff line number Diff line change 1
1
export default function minDifference (
2
2
nums : number [ ] ,
3
- queries : number [ ] [ ] ,
3
+ queries : number [ ] [ ]
4
4
) : number [ ] {
5
5
const n = nums . length ;
6
6
7
- const presum = Array ( 100 )
7
+ const sorted = [ ...new Set ( nums ) ] . sort ( ( a , b ) => a - b )
8
+
9
+ const presum = Array ( 100 )
8
10
. fill ( 0 )
9
11
. map ( ( ) => Array < number > ( n ) . fill ( 0 ) ) ;
10
12
11
- for ( let k = 1 ; k <= 100 ; k ++ ) {
13
+ for ( const k of sorted ) {
12
14
for ( let i = 0 ; i < n ; i ++ ) {
13
- presum [ k - 1 ] [ i ] = ( i == 0 ? 0 : presum [ k - 1 ] [ i - 1 ] ) +
14
- Number ( nums [ i ] == k ) ;
15
+ presum [ k - 1 ] [ i ] =
16
+ ( i == 0 ? 0 : presum [ k - 1 ] [ i - 1 ] ) + Number ( nums [ i ] == k ) ;
15
17
}
16
18
}
17
19
18
20
return queries . map ( ( [ left , right ] ) => {
19
21
const arr = Array < number > ( ) ;
20
- for ( let k = 1 ; k <= 100 ; k ++ ) {
21
- const count = presum [ k - 1 ] [ right ] -
22
+ for ( const k of sorted ) {
23
+ const count =
24
+ presum [ k - 1 ] [ right ] -
22
25
( left == 0 ? 0 : presum [ k - 1 ] [ left - 1 ] ) ;
23
26
24
27
if ( count ) {
@@ -28,14 +31,13 @@ export default function minDifference(
28
31
if (
29
32
arr . length >= 2 &&
30
33
arr [ arr . length - 1 ] - arr [ arr . length - 2 ] == 1
31
- ) {
32
- return 1 ;
33
- }
34
+ )
35
+ return 1 ;
34
36
}
35
37
if ( arr . length <= 1 ) return - 1 ;
36
38
else {
37
39
return Math . min (
38
- ...arr . map ( ( v , i , a ) => ( i === 0 ? Infinity : v - a [ i - 1 ] ) ) ,
40
+ ...arr . map ( ( v , i , a ) => ( i === 0 ? Infinity : v - a [ i - 1 ] ) )
39
41
) ;
40
42
}
41
43
} ) ;
You can’t perform that action at this time.
0 commit comments