File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number[][] } queries
4+ * @return {number[] }
5+ */
6+ const minDifference = function ( nums , queries ) {
7+ const n = nums . length
8+ const idx = Array ( 101 ) . fill ( 0 ) . map ( ( ) => [ ] )
9+ for ( let i = 0 ; i < n ; i ++ ) idx [ nums [ i ] ] . push ( i )
10+ const ans = [ ]
11+ for ( const [ a , b ] of queries ) {
12+ let last = - 1 ; let min = 1e10
13+ for ( let i = 1 ; i <= 100 ; i ++ ) {
14+ // idx[i] 是否有 1 个值在 [a, b] 之间
15+ let l = 0 ; let r = idx [ i ] . length - 1 ; let x ; let y
16+ while ( l < r ) {
17+ const mid = l + r >> 1
18+ if ( idx [ i ] [ mid ] >= a ) r = mid
19+ else l = mid + 1
20+ }
21+ if ( ! ( idx [ i ] [ l ] >= a ) ) continue
22+ // else x = l
23+ // l = 0, r = idx[i].length - 1
24+ // while (l < r) {
25+ // const mid = l + r + 1 >> 1
26+ // if (idx[i][mid] <= b) l = mid
27+ // else r = mid - 1
28+ // }
29+ // if (!(idx[i][l] <= b)) continue
30+ // else y = l
31+ // if (y - x + 1 >= 1) {
32+ if ( idx [ i ] [ l ] <= b ) {
33+ if ( last !== - 1 ) min = Math . min ( min , i - last )
34+ last = i
35+ }
36+ }
37+ ans . push ( min === 1e10 ? - 1 : min )
38+ }
39+ return ans
40+ }
You can’t perform that action at this time.
0 commit comments