File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {number }
4+ */
5+ const minimumDifference = function ( nums ) {
6+ const n = nums . length , len = n / 3
7+ const maxCompare = ( p , c ) => { return p === c ? 0 : ( p > c ? - 1 : 1 ) }
8+ const minCompare = ( p , c ) => { return p === c ? 0 : ( p < c ? - 1 : 1 ) }
9+ const maxHeap = new PriorityQueue ( { compare : maxCompare } )
10+ const minHeap = new PriorityQueue ( { compare : minCompare } )
11+ const pre = Array ( n ) . fill ( Infinity ) , suffix = Array ( n ) . fill ( - Infinity )
12+ for ( let i = 0 , sum = 0 ; i < 2 * len ; i ++ ) {
13+ const cur = nums [ i ]
14+ maxHeap . enqueue ( cur )
15+ sum += cur
16+ if ( maxHeap . size ( ) > len ) {
17+ const tmp = maxHeap . dequeue ( )
18+ sum -= tmp
19+ }
20+ if ( maxHeap . size ( ) === len ) {
21+ pre [ i ] = sum
22+ }
23+ }
24+
25+ for ( let i = n - 1 , sum = 0 ; i >= len ; i -- ) {
26+ const cur = nums [ i ]
27+ minHeap . enqueue ( cur )
28+ sum += cur
29+ if ( minHeap . size ( ) > len ) {
30+ const tmp = minHeap . dequeue ( )
31+ sum -= tmp
32+ }
33+ if ( minHeap . size ( ) === len ) {
34+ suffix [ i ] = sum
35+ }
36+ }
37+
38+ // console.log(pre, suffix)
39+ let res = Infinity
40+ for ( let i = len - 1 ; i < n - len ; i ++ ) {
41+ res = Math . min ( res , pre [ i ] - suffix [ i + 1 ] )
42+ }
43+ return res
44+ } ;
45+
46+ // another
47+
48+
149/**
250 * @param {number[] } nums
351 * @return {number }
You can’t perform that action at this time.
0 commit comments