Your concept feed
16 ideas
Follow the connections in this topic
A small step before this topic
Let’s picture it Let’s start with three stops.
Home. Then the park. Then the café. Just a few things in a row.
One little change Point to the middle one.
The park is second. In Python, its position is 1, because counting starts at 0.
Now it has a name That’s a list.
A list keeps things in order. An index is just a position in that list.
No pressure. Just try it.Which place is at position 0?
1 / 4 A small step before this topic
Let’s picture it Now visit each stop.
You don’t need three different instructions. “Visit the next place” works each time.
One little change One, then the next.
Finish home. Move to the park. Then do the same at the café.
Now it has a name That repeat is a loop.
One small action, repeated for each item. Three stops mean three visits.
No pressure. Just try it.Add one more stop. How many visits now?
1 / 4 A small step before this topic
Let’s picture it What if it rains?
Let’s choose the café on rainy days, and the park on sunny days.
One little change Today is sunny.
The rule stays the same. The weather changed, so we choose the other place.
Now it has a name That’s an if / else.
Raining?
Yes: café
No: park
A condition is a yes-or-no question. Its answer chooses which step happens next.
No pressure. Just try it.It’s raining. Where does our rule send us?
1 / 4 A small step before this topic
Let’s picture it Name a tiny job.
Our job is “add one.” Give it 3, and it gives back 4.
One little change Try a new input.
Give the same job 8. It gives back 9. We can reuse the instructions.
Now it has a name That job is a function.
Input goes in. An answer comes back. In Python, return sends the answer back.
No pressure. Just try it.What does add-one return for 5?
1 / 4 A small step before this topic
Let’s picture it Picture a pile of plates.
Blue goes down first. Pink goes on top.
One little change Take the top one.
Pink comes off first, even though blue arrived first.
Now it has a name That’s a stack.
Last in, first out. Paused function calls work this way too: finish the newest call, then return.
No pressure. Just try it.Add green on top. Which plate comes off next?
1 / 4 A small step before this topic
Let’s picture it Have we visited the park?
Keep a little checklist of places we’ve seen.
One little change Write park again.
We still only need one check beside park. We’re remembering whether, not how many times.
Now it has a name That’s a set.
A set keeps distinct items. “Is park in here?” becomes a quick membership check.
No pressure. Just try it.Add park twice. How many copies in a set?
1 / 4 A small step before this topic
Let’s picture it Let’s remember a little more.
The park is five minutes away. Write that beside its name.
One little change Look it up later.
Ask for “park.” The notebook gives you 5. No need to measure the walk again.
Now it has a name That’s a dictionary.
A key finds a value. Here, the place name is the key and the time is the value.
No pressure. Just try it.We now write park: 6. What does park return?
1 / 4 A small step before this topic
Let’s picture it Draw our little walk.
A dot for each place. A line where we can walk directly.
One little change Two short walks can join.
Home to park, then park to café. We can reach the café without a direct road.
Now it has a name Dots and links have names.
A dot is a node. A link is an edge. Together, they make a graph.
No pressure. Just try it.Must two places share a direct road to be reachable?
1 / 4 A small step before this topic
Let’s picture it Same door. One small difference.
You have a key. Your friend doesn’t. The door is the same, but your next move isn’t.
One little change Remember the key.
If we only write down “at the door,” we lose something important.
Now it has a name That little note is a state.
A state remembers what we need to continue. Here: where we are, and whether we have the key.
No pressure. Just try it.Is “at the door” enough to decide if we can enter?
1 / 4 A small step before this topic
Let’s picture it How many little jobs?
Visit three places. Say hello once at each. That’s three hellos.
One little change Now try every pair.
Three people each greet all three people, including themselves for this toy count. That’s nine greetings.
Now it has a name Count how the work grows.
One pass grows with n. Trying every pair grows with n × n. Code length doesn’t tell us that.
No pressure. Just try it.With 4 items, how many ordered pairs, including self-pairs?
1 / 4 A small step before this topic
Let’s picture it Find 8 in a sorted row.
Start with 2, 4, 6, 8, 10. Look at the middle: 6.
One little change Keep the side that can work.
8 is bigger than 6. Everything on the left is too small, so we can leave it behind.
Now it has a name Keep one promise.
If 8 is present, it stays in the part we keep. That repeating promise is called an invariant.
No pressure. Just try it.Would this left-or-right shortcut work on an unsorted row?
1 / 4 A small step before this topic
A familiar idea Split a row into two groups.
Values are 3, 2, 4. Keep their order. We want the smallest possible largest group sum.
One new wrinkle Try a cap of 4.
3 and 2 cannot stay together. Neither can 2 and 4. We need three groups, so cap 4 is too small.
Try a tiny example Try a cap of 5.
[3, 2] and [4] fit. A cap of 6 would work too. Making the cap larger cannot hurt.
Notice what matters The answers have a boundary.
Too small, too small, then possible forever. Binary search can find that first possible cap.
Make it reusable Search answers, not positions.
guess cap
count groups
keep half
Test a cap by greedily filling each group before starting the next. Nonnegative values make this feasibility test safe.
No pressure. Just try it.Which guarantee makes the greedy group test safe?
1 / 6 A small step before this topic
Let’s picture it Keep a small part of a row.
Our budget is 5. The values 2 and 3 fit together.
One little change One more makes it too much.
Add 4: the sum is 9. Remove from the left until it fits again.
Now it has a name That moving part is a window.
left edge
kept values
right edge
With nonnegative values, adding cannot lower the sum. That predictable change tells us which boundary to move.
No pressure. Just try it.Could adding a negative number make a too-large sum fit?
1 / 4 A small step before this topic
A familiar idea A window meets a negative number.
Find stretches totaling 2 in [2, −1, 1]. Adding −1 shrinks the sum, so the usual window direction is no longer reliable.
One new wrinkle Keep a running total instead.
Before anything: 0. After each number: 2, 1, 2. These totals describe the boundaries between items.
Try a tiny example Subtract two boundaries.
earlier: 0
current: 2
difference: 2
A current total of 2 minus an earlier total of 0 gives a stretch totaling 2.
Notice what matters Ask for the missing earlier total.
At total s, look for earlier total s − k. Count how often it appeared, then record s.
Make it reusable Prefix sums meet a dictionary.
The two valid stretches are [2] and [2, −1, 1]. We found both without trying every starting point again.
No pressure. Just try it.Why count earlier totals instead of keeping only a set?
1 / 6 A small step before this topic
A familiar idea Who is still waiting for warmth?
Temperatures are 73, 71, 74. The first two days have not yet seen a warmer day.
One new wrinkle 74 answers two questions.
73: wait 2
71: wait 1
74: waiting
It is warmer than 71, and also warmer than 73. Their waits end together.
Try a tiny example Keep only unanswered days.
Store their positions in a stack. Temperatures go downward from the bottom toward the top.
Notice what matters Resolve the top while you can.
waiting index
today’s index
subtract
When a warmer day arrives, pop each cooler waiting day and record the distance between their positions.
Make it reusable That’s a monotonic stack.
Each day enters once and leaves at most once. The nested while loop still does only linear total popping.
No pressure. Just try it.Does a day at 73 resolve an earlier day at 73?
1 / 6 A small step before this topic
A familiar idea Reuse the waiting stack.
Now the bars have heights 2, 4, 2. We want the biggest rectangle under neighboring bars.
One new wrinkle The tallest bar is not enough.
Height 4 across one bar gives area 4. Height 2 across all three gives area 6.
Try a tiny example Wait until a shorter bar arrives.
The final 2 stops the height-4 rectangle. We now know its right boundary.
Notice what matters The stack remembers the other boundary.
Pop 4. The previous smaller bar is at position 0; the new smaller bar is at 2. Width: 2 − 0 − 1.
Make it reusable Close every waiting rectangle.
height × width
keep maximum
Use a zero-height sentinel at the end. Popping bars computes completed areas; keep the biggest.
No pressure. Just try it.Why does a shorter bar matter?
1 / 6 Keep a connection for later.
Tap the bookmark on any post to find it here.