Skip to content

Commit 16c82f9

Browse files
committed
https://leetcode.cn/problems/find-servers-that-handled-most-number-of-requests/
1 parent 0ee16d7 commit 16c82f9

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ leetcode 测试
1010

1111
##### 包含的内容如下
1212

13+
https://leetcode.cn/problems/number-of-closed-islands/
14+
15+
https://leetcode.cn/problems/find-servers-that-handled-most-number-of-requests/
16+
1317
https://leetcode.cn/problems/binary-tree-paths/
1418

1519
https://leetcode-cn.com/problems/trim-a-binary-search-tree/

deps.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export { combinations } from "https://deno.land/x/[email protected]/mod.ts";
1919
export { isIP } from "https://deno.land/[email protected]/node/internal/net.ts";
2020
export { Heap } from "https://esm.sh/@datastructures-js/[email protected]/?dts";
2121
export {
22+
AvlTree,
2223
BinarySearchTree,
2324
BinarySearchTreeNode,
2425
} from "https://esm.sh/@datastructures-js/[email protected]/?dts";
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
export default busiestServers;
2+
import { AvlTree, Heap } from "../deps.ts";
3+
function busiestServers(
4+
k: number,
5+
arrival: number[],
6+
load: number[],
7+
): number[] {
8+
const cnts = new Map<number, number>();
9+
const pq = new Heap<[number, number]>((a, b) => a[0] - b[0]);
10+
const free = new AvlTree<number>((a, b) => a - b);
11+
for (const i of Array(k).keys()) {
12+
free.insert(i);
13+
}
14+
let max = 0;
15+
for (const [i, a] of arrival.entries()) {
16+
const l = load[i];
17+
while (!pq.isEmpty() && pq.root()[0] <= a) {
18+
free.insert(pq.pop()[1]);
19+
}
20+
if (free.count() === 0) continue;
21+
const hope = i % k;
22+
23+
const next = free.ceil(hope)?.getValue() ??
24+
free.min()?.getValue() ??
25+
0;
26+
27+
const value = (cnts.get(next) ?? 0) + 1;
28+
cnts.set(next, value);
29+
max = Math.max(value, max);
30+
31+
free.remove(next);
32+
pq.insert([a + l, next]);
33+
}
34+
return Array.from(cnts.entries())
35+
.filter((a) => a[1] === max)
36+
.map((a) => a[0]);
37+
}

number-of-closed-islands/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
function closedIsland(grid: number[][]): number {}
2+
export default closedIsland;

0 commit comments

Comments
 (0)