Untitled
unknown
plain_text
10 months ago
744 B
4
Indexable
fn(int[] arr)
{
n = arr.length;
Dq dq; // store indexes
int i = 0, j = 0;
// process the first k lements
while(j<k)
{
while(dq.isEmpty() && arr[j]!=1 + arr[dq.peekLast()])
{
dq.pollLast();
}
dq.addLast(j);
j++;
}
if(dq.size() == k)
result.add(arr[dq.peekLast()]);
while(j<n)
{
while(!dq.isEmpty() && arr[j]!=1 + arr[dq.peekLast()])
{
dq.pollLast();
}
// shift window by 1
i++;
if(!dq.isEmpty() && dq.peekFront()<i)
dq.pollFirst();
// operation on j
dq.addLast(j);
if(dq.size() == k)
result.add(arr[dq.peekLast()]);
j++;
}
return result;
}Editor is loading...
Leave a Comment