Skip to content

Commit e9b9c3c

Browse files
authored
Update 1353-maximum-number-of-events-that-can-be-attended.js
1 parent 2869ef7 commit e9b9c3c

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

1353-maximum-number-of-events-that-can-be-attended.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,29 @@ function maxEvents(events) {
220220
// segmentTree.setAt(i, value)
221221
// segmentTree.length
222222
class SegmentTree{constructor(t,e,s){if(this.valueLength=t.length,this.identity=e,this.associate=s,0===t.length)this.tree=[];else{const h=2**Math.ceil(Math.log2(t.length))*2-1,i=[];for(let s=0;s<=h>>1;++s)i[(h>>1)+s]=s<t.length?t[s]:e;for(let t=(h>>1)-1;t>=0;--t)i[t]=s(i[2*t+1],i[2*t+2]);this.tree=i}}get length(){return this.valueLength}getAt(t){return this.tree[t+(this.tree.length>>1)]}queryIn(t,e){let s=this.identity;const h=[[0,0,1+(this.tree.length>>1)]];for(;h.length>0;){const[i,r,n]=h.pop();r>=t&&n<=e?s=this.associate(s,this.tree[i]):r>=e||n<t||i>this.tree.length>>1||h.push([2*i+1,r,r+n>>1],[2*i+2,r+n>>1,n])}return s}setAt(t,e){const s=t+(this.tree.length>>1);this.tree[s]=e;let h=s-1>>1;for(;h>=0;)this.tree[h]=this.associate(this.tree[2*h+1],this.tree[2*h+2]),h=h-1>>1}}
223+
224+
225+
// another
226+
227+
/**
228+
* @param {number[][]} events
229+
* @return {number}
230+
*/
231+
function maxEvents(events) {
232+
const pq = new MinPriorityQueue ()
233+
events.sort((a, b) => a[0] - b[0])
234+
let res = 0, i = 0, n = events.length
235+
for(let d = 1; d <= 1e5; d++) {
236+
while(i < n && events[i][0] === d) {
237+
pq.enqueue(events[i++][1])
238+
}
239+
while(!pq.isEmpty() && pq.front().element < d) {
240+
pq.dequeue()
241+
}
242+
if(!pq.isEmpty()) {
243+
res++
244+
pq.dequeue()
245+
}
246+
}
247+
return res
248+
}

0 commit comments

Comments
 (0)