Labeled break and continue in Java - Time & Space Complexity
We want to see how using labeled break and continue affects how long a program runs.
Specifically, we ask: how does the program's steps grow as input gets bigger?
Analyze the time complexity of the following code snippet.
public class Example {
public static void labeledLoop(int n) {
outer: for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j == i) continue outer;
}
}
}
}
This code uses a labeled continue to jump out of the inner loop and continue the outer loop early.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Nested loops with an early jump using labeled continue.
- How many times: Outer loop runs n times; for each i, inner loop body executes (i+1) times; total ~ n2/2.
Because the inner loop stops early each time, total steps grow roughly like n2/2.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 55 steps |
| 100 | About 5,050 steps |
| 1000 | About 500,500 steps |
Pattern observation: The total work grows quadratically with n.
Time Complexity: O(n^2)
This means the program's steps increase quadratically as input size grows.
[X] Wrong: "Early exit from inner loop makes overall time O(n)."
[OK] Correct: The inner loop stops at j==i each time, but total operations is sum_{i=0}^{n-1} (i+1) ≈ n2/2, still O(n^2).
Understanding how labeled break and continue affect loops shows you can read code carefully and explain its speed clearly.
"What if we replaced the labeled continue with a labeled break? How would the time complexity change?"
Practice
break statement do in Java nested loops?Solution
Step 1: Understand labeled break usage
A labeled break exits the loop that has the specified label, not just the innermost loop.Step 2: Compare with normal break
Normal break exits only the innermost loop, but labeled break can exit outer loops directly.Final Answer:
It exits the loop identified by the label immediately. -> Option DQuick Check:
Labeled break = exit labeled loop [OK]
- Confusing labeled break with continue
- Thinking it only affects the innermost loop
- Assuming it pauses instead of exits
Solution
Step 1: Recall labeled continue syntax
The correct syntax is the keywordcontinuefollowed by the label name and a semicolon.Step 2: Eliminate incorrect forms
Java does not use colons, parentheses, or arrows with continue statements.Final Answer:
continue labelName; -> Option BQuick Check:
Correct labeled continue syntax = continue labelName; [OK]
- Adding colon after continue
- Using parentheses around label
- Using arrow symbols instead of space
outer:
for (int i = 1; i <= 3; i++) {
inner:
for (int j = 1; j <= 3; j++) {
if (j == 2) continue outer;
System.out.print(i + "-" + j + " ");
}
}Solution
Step 1: Analyze loops and continue
When j == 2, the statementcontinue outer;skips the rest of the current outer loop iteration and moves to the next i.Step 2: Trace output
For i=1, j=1 prints "1-1 ". At j=2, continue outer skips to i=2. Similarly for i=2 and i=3, only j=1 prints.Final Answer:
1-1 2-1 3-1 -> Option CQuick Check:
Labeled continue skips to next outer loop iteration [OK]
- Thinking continue skips only inner loop
- Expecting all inner loop values to print
- Ignoring label effect on continue
outer:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == j) break;
}
}Solution
Step 1: Check label usage
The label 'outer' is declared but never referenced by break or continue statements.Step 2: Understand label necessity
Labels must be used with break or continue to have effect; otherwise, they are redundant but not syntax errors.Final Answer:
The label 'outer' is not used with break or continue. -> Option AQuick Check:
Unused label = no effect but no syntax error [OK]
- Assuming unused label causes syntax error
- Thinking break without label breaks outer loop
- Confusing label usage rules
Solution
Step 1: Understand the condition and loops
We want to print pairs where i < j only. If i >= j, skip to next j (inner loop iteration).Step 2: Analyze each option's control flow
outer: for (int i = 1; i <= 3; i++) { inner: for (int j = 1; j <= 3; j++) { if (i >= j) continue inner; System.out.print("(" + i + "," + j + ") "); } } usescontinue inner;to skip the current iteration and move to next j, efficiently skipping invalid pairs.Final Answer:
Uses continue inner; to skip when i >= j. -> Option AQuick Check:
Labeled continue to inner loop skips invalid pairs [OK]
- Using break outer which stops all loops
- Using continue outer which skips valid pairs as well
- Using break inner which stops inner loop prematurely
Ready to prove it?
Pass the test and this pattern moves unknown
