Skip to content

Commit 77f932e

Browse files
authored
Merge pull request #1193 from ShrujanKotturi/skotturi/1851-Minimum-Interval-to-Include-Each-Query
Create 1851-Minimum-Interval-to-Include-Each-Query.cs
2 parents ed962bb + 6720e2b commit 77f932e

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
public class Solution
2+
{
3+
public int[] MinInterval(int[][] intervals, int[] queries)
4+
{
5+
6+
var q = queries.Length;
7+
var indexDict = new int[q][];
8+
var index = 0;
9+
foreach (var query in queries)
10+
{
11+
indexDict[index] = new int[2] { query, index };
12+
index++;
13+
}
14+
Array.Sort(indexDict, (a, b) => a[0] - b[0]);
15+
Array.Sort(intervals, (a, b) => a[0] - b[0]);
16+
17+
var pq = new PriorityQueue<int[], int>();
18+
var result = new int[queries.Length];
19+
20+
index = 0;
21+
foreach (var query in indexDict)
22+
{
23+
var resultIndex = query;
24+
var calResult = -1;
25+
26+
while (index < intervals.Length && intervals[index][0] <= resultIndex[0])
27+
{
28+
var curr = intervals[index];
29+
pq.Enqueue(new int[2] { curr[1] - curr[0] + 1, curr[1] }, curr[1] - curr[0] + 1);
30+
index++;
31+
}
32+
33+
while (pq.Count > 0 && pq.Peek()[1] < resultIndex[0])
34+
{
35+
pq.Dequeue();
36+
}
37+
calResult = pq.Count > 0 ? pq.Peek()[0] : -1;
38+
result[resultIndex[1]] = calResult;
39+
}
40+
41+
return result;
42+
43+
}
44+
}

0 commit comments

Comments
 (0)