Untitled
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