100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

How Do You Find the Maximum in Every Sliding Window of Size K?

Learn the monotonic deque technique to solve sliding window maximum in O(n) time for this common algorithms interview question.

hardQ87 of 234 in Data Structures & Algorithms Est. time: 6 minsLast updated:
Open Code Lab
87 / 234

Expected Interview Answer

You solve sliding-window-maximum in O(n) time using a monotonic deque that stores indices in decreasing order of their values, so the front of the deque is always the index of the current window’s maximum, popped and pushed at most once each as the window slides.

As the window slides one position at a time across the array, you maintain a deque of indices whose corresponding values are in strictly decreasing order from front to back. Before adding the current index, you pop from the back of the deque every index whose value is less than or equal to the current value, since those elements can never be the maximum again while the current, larger element is still in the window — this is what keeps the deque monotonic. You also check the front of the deque and pop it if its index has fallen outside the current window’s left boundary. After these two cleanup steps, the front of the deque always holds the index of the maximum for the current window, which you record once the window has grown to size k. Each index is pushed and popped from the deque at most once across the whole scan, which is why total work is O(n) despite sliding n - k + 1 windows, versus the naive O(n·k) approach of scanning every window fully or the O(n log k) heap-based approach that needs lazy deletion for expired indices.

  • O(n) total time versus O(n·k) for a naive per-window scan
  • Each array index enters and leaves the deque at most once
  • No need for lazy deletion, unlike a heap-based alternative
  • Deque stores indices, not values, so window-boundary checks are O(1)

AI Mentor Explanation

A selector tracking the fastest bowler among the last k overs keeps a shortlist ordered from fastest to slowest, but only ever needs to compare a new bowler against the back of the shortlist. When a new over’s bowler is faster than the bowler currently at the back of the shortlist, that slower bowler is removed, since they can never again be the fastest while this new, faster bowler is still within the last k overs — this repeats until the shortlist is back in strict fastest-to-slowest order. If the bowler at the front of the shortlist bowled more than k overs ago, they are dropped from the front since they have aged out of the window. The bowler now at the front of the shortlist is always the fastest among the last k overs, maintained with each bowler entering and leaving the shortlist only once across the whole match.

Step-by-Step Explanation

  1. Step 1

    Maintain a monotonic deque of indices

    Indices in the deque correspond to strictly decreasing values, front to back.

  2. Step 2

    Trim the back before pushing

    Pop indices from the back whose value is <= the current value; they can never win again.

  3. Step 3

    Push the current index

    Add the current index to the back of the deque after trimming.

  4. Step 4

    Trim the front and record the max

    Pop the front if its index is out of the window; once the window has size k, the front holds the maximum.

What Interviewer Expects

  • Explain why the deque stays monotonically decreasing and why that guarantees correctness
  • State the amortized O(n) complexity, with each index pushed and popped at most once
  • Compare against the naive O(n·k) and the heap-based O(n log k) alternatives
  • Correctly handle window-boundary eviction using indices, not values, stored in the deque

Common Mistakes

  • Storing values instead of indices in the deque, losing the ability to check window boundaries
  • Popping only once from the back instead of a while-loop, breaking the monotonic invariant
  • Forgetting to evict the front index once it falls outside the window
  • Recomputing the max by scanning the window each time, degrading to O(n·k)

Best Answer (HR Friendly)

I keep a special queue of array indices that stays sorted from largest value to smallest as I slide the window. Before adding a new index, I remove any smaller values from the back since they can never be the max again once a bigger, more recent value is in the window, and I drop the front index once it slides out of the window. This means the front of the queue is always the current window’s maximum, and the whole scan only takes O(n) time total.

Code Example

Monotonic deque sliding window maximum
from collections import deque

def max_sliding_window(nums, k):
    dq = deque()   # stores indices, values decreasing front to back
    result = []

    for i, num in enumerate(nums):
        while dq and nums[dq[-1]] <= num:
            dq.pop()
        dq.append(i)

        if dq[0] <= i - k:
            dq.popleft()

        if i >= k - 1:
            result.append(nums[dq[0]])

    return result

print(max_sliding_window([1, 3, -1, -3, 5, 3, 6, 7], 3))
# [3, 3, 5, 5, 6, 7]

Follow-up Questions

  • How would you adapt this to track the sliding window minimum instead?
  • Why is the heap-based approach O(n log k) instead of O(n) like the deque approach?
  • How would you find the sliding window median instead of the maximum?
  • How does the amortized analysis prove O(n) total time despite the nested-looking while loop?

MCQ Practice

1. What invariant does the deque maintain in the sliding window maximum algorithm?

The deque holds indices whose values decrease from front to back, so the front index always holds the current window maximum.

2. What is the overall time complexity of the monotonic deque approach for n elements and window size k?

Each index is pushed and popped from the deque at most once across the entire scan, giving amortized O(n) total time.

3. Why does the algorithm store indices in the deque instead of values?

Storing indices lets the algorithm detect and evict the front element once it slides outside the k-sized window boundary.

Flash Cards

What does the deque store in the sliding window maximum algorithm?Array indices, kept in strictly decreasing order of their values.

Why are smaller values popped from the back before pushing a new index?They can never be the maximum again while a newer, larger value remains in the window.

What is the total time complexity across the whole array?O(n) amortized, since each index enters and leaves the deque at most once.

When is the front of the deque evicted?When its index falls outside the current window (index <= current index - k).

1 / 4
87 / 234

Continue Learning

Frequently Asked Questions

21 categories · pick one to explore

Where can I practice technical interview questions for free in India?
SkillVeris offers a free interview questions section with readiness scoring, so you can practice technical interview questions at no cost from anywhere in India or worldwide. Questions span AI/ML, programming, web development, DevOps, cloud and security. Combine them with Code Lab for hands-on coding practice and the AI Mentor for instant explanations whenever an answer confuses you.
How do I prepare for a coding interview if I am a complete beginner?
Start by learning one language well, then practice small problems daily before attempting interview questions. On SkillVeris you can take a free structured programming course with 24–40 lessons, write code in the in-browser Code Lab across 6 languages, and then move to the interview questions bank with readiness scoring to measure how prepared you actually are.
What is interview readiness scoring and how does it work?
Interview readiness scoring measures how prepared you are for a technical interview based on your performance across practice questions. On SkillVeris, as you answer interview questions, your readiness score updates so you can see weak topics before the real interview. It turns vague confidence into a concrete signal, telling you which areas need more revision and which are already strong.
How long does it take to get interview ready for a developer job?
Most beginners need a few months of consistent practice to feel interview ready, though timelines vary with background and daily study time. A practical route is finishing a structured SkillVeris course, which includes 24–40 lessons, module assessments and a final exam at an 80 percent pass mark, then drilling the free interview questions until your readiness score is consistently strong.
What are the most common technical interview topics for freshers?
Freshers are commonly tested on programming fundamentals, data structures, problem solving, databases, and basics of the role's stack such as web development or cloud. SkillVeris covers these through 37 free courses, a glossary of around 2,000 terms for quick definitions, cheat sheets for revision, and interview questions with readiness scoring so you can practise exactly what interviewers usually ask.
Can I practice coding interview prep without installing anything?
Yes, SkillVeris Code Lab runs entirely in your browser, so you can practice coding interview prep without installing compilers or editors. It supports 6 languages across 15 categories of exercises. Pair Code Lab sessions with the interview questions bank and readiness scoring, and you have a complete free preparation setup that works on any machine with an internet connection.
How do I explain technical concepts clearly in an interview?
Practice explaining each concept through a simple analogy first, then add the technical detail, because interviewers value clarity over jargon. SkillVeris teaches with its Learn Through Hobbies method, explaining concepts through cricket, music, gaming, cooking and eight more domains. Learning a topic through an analogy gives you a ready-made, memorable way to explain it when an interviewer asks.
Are there free mock interview resources for software engineers?
SkillVeris provides free interview questions with readiness scoring, which works like a self-paced mock interview you can repeat any time. You answer real-style technical questions, get scored, and see where you stand. The AI Mentor is available 24/7 to explain any answer at Quick, Detailed or Deep-dive depth, acting like an always-available interviewer who never gets tired.
How should I prepare for an AI or machine learning interview?
Cover ML fundamentals, Python, and modern topics like LLMs and RAG, then practise explaining projects clearly. SkillVeris has free AI/ML courses including Python for AI and ML, Large Language Models and Retrieval-Augmented Generation, each with 24–40 lessons and assessments. After finishing, use the interview questions bank and readiness scoring to confirm you can answer under pressure.
What should I revise the night before a technical interview?
Revise concise summaries rather than learning anything new: core definitions, common patterns, and your own project stories. SkillVeris cheat sheets and study notes are built exactly for this kind of quick revision, and the glossary of around 2,000 terms lets you verify any definition fast. A short readiness-score check on the interview questions bank confirms nothing critical is shaky.
How do I prepare for a DevOps interview with no work experience?
Build demonstrable knowledge through structured learning and hands-on practice, since you cannot point to job experience. SkillVeris offers free DevOps, Docker and Kubernetes related courses within its 37-course catalog and a DevOps Engineer learning path. Complete the courses, earn certificates by passing the final exams, then use the interview questions section to rehearse common DevOps scenarios.
Do certificates help in clearing technical interviews?
Certificates alone do not clear interviews, but they signal structured learning and give interviewers a starting point for questions. SkillVeris awards certificates when you pass a course final exam at 80 percent, after 24–40 lessons and module assessments, so the certificate reflects genuine effort. Pair it with practised interview answers and Code Lab projects to make a stronger impression.
How can I improve my problem solving speed for coding interviews?
Speed comes from repetition on progressively harder problems, not from rushing. Practise daily in SkillVeris Code Lab, which offers in-browser coding in 6 languages across 15 categories, and time yourself on interview questions. Review every mistake with the AI Mentor, which explains solutions 24/7 at Quick, Detailed or Deep-dive depth, so each session genuinely improves your pattern recognition.
What questions are asked in a Python technical interview?
Python interviews typically cover data types, functions, comprehensions, OOP, error handling and libraries relevant to the role, such as ML packages for AI positions. SkillVeris interview questions include Python topics, and its free Python for AI and ML course builds the underlying knowledge across 24–40 lessons. Readiness scoring then shows whether your Python answers are interview grade.
How do I handle interview questions I don't know the answer to?
Say what you do know, reason aloud toward an approach, and be honest about the gap, because interviewers value thinking over bluffing. Reduce how often this happens by broadening fundamentals: SkillVeris study notes, cheat sheets and the roughly 2,000-term glossary fill knowledge gaps quickly, and readiness scoring highlights weak areas before an interviewer ever finds them.
Is there a free way to check my interview readiness before applying for jobs?
Yes, SkillVeris interview questions come with readiness scoring, all completely free, so you can measure preparation before applying. Once your score looks solid, browse the SkillVeris Jobs page, which aggregates live roles across India, UK, USA, Germany and Remote with salary and experience filters, and apply knowing your technical preparation has been objectively tested.
How do I prepare for web developer interview questions?
Focus on JavaScript fundamentals, your framework of choice, HTTP basics, and building things you can discuss. SkillVeris offers free web development courses among its 37-course catalog, plus a Full Stack Java Developer learning path. After the courses, drill the interview questions bank, practise coding tasks in Code Lab, and use readiness scoring to verify you cover typical frontend and backend topics.
Can the AI Mentor help me practice interview answers?
Yes, the SkillVeris AI Mentor answers questions 24/7 and can explain any concept at Quick, Detailed or Deep-dive depth, which makes it useful for rehearsing interview explanations. Ask it to clarify a topic, then try explaining it back in your own words. Combined with the interview questions bank and readiness scoring, it becomes a free, always-available practice partner.
What is the best free platform for technical interview prep in 2026?
SkillVeris is a strong free option because it combines structured learning with dedicated interview preparation in one place. You get 37 free courses, interview questions with readiness scoring, an in-browser Code Lab for hands-on practice, cheat sheets and study notes for revision, and a 24/7 AI Mentor. Everything is free, which matters for learners in India and worldwide.
How do I stay calm and confident during a technical interview?
Confidence comes from evidence of preparation, so build that evidence deliberately. Complete a SkillVeris course, pass its final exam at the 80 percent bar, and watch your readiness score climb on the interview questions bank. Knowing you have explained concepts through analogies, coded in Code Lab, and scored well on practice questions gives you genuine, grounded calm on the day.

What Learners Say

Real journeys from the SkillVeris community — swipe for more.

SkillVeris taught me Python through Cricket. Now I’m building real projects and feeling confident!
Arjun S. · B.Tech Student
The best platform for hobby-based learning. Concepts finally stick.
Priya R. · Data Analyst
I went from zero coding to a portfolio of projects — all by learning through my love for gaming. Landed my first internship!
Kabir M. · CS Undergraduate
Trending Topics50 popular tags — tap to explore
Trending CoursesAll 37 free courses — tap to browse