Untitled

 avatar
unknown
plain_text
a month ago
744 B
2
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;     

}
Leave a Comment