Logical operators (&&, ||, !) in Kotlin - Time & Space Complexity
Logical operators help decide true or false in code. We want to see how using them affects how long the code takes to run.
How does the number of checks grow when we use these operators?
Analyze the time complexity of the following code snippet.
fun checkConditions(a: Boolean, b: Boolean, c: Boolean): Boolean {
return (a && b) || !c
}
This code checks three true/false values using logical AND, OR, and NOT operators.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Evaluating three Boolean values with logical operators.
- How many times: Each operator runs once per function call; no loops or repeated checks.
Since the function only checks three values once, the work stays the same no matter what.
| Input Size (n) | Approx. Operations |
|---|---|
| 3 (fixed booleans) | 3 checks |
| 10 (if extended) | Still 3 checks (no loops) |
| 1000 (if extended) | Still 3 checks (no loops) |
Pattern observation: The number of operations does not grow with input size because there are no loops or repeated checks.
Time Complexity: O(1)
This means the time to run stays the same no matter how many inputs you might imagine.
[X] Wrong: "Logical operators check all inputs every time, so time grows with input size."
[OK] Correct: Logical operators stop checking as soon as the result is clear, and here we only have a fixed number of checks.
Understanding how logical operators work helps you write efficient conditions and shows you know how code runs fast and smart.
"What if we used a list of booleans and checked them all with && in a loop? How would the time complexity change?"
Practice
Solution
Step 1: Understand the meaning of && operator
The && operator checks if both conditions are true and returns true only then.Step 2: Compare with other operators
The || operator means OR, ! means NOT, and & is a bitwise operator, not logical AND.Final Answer:
&& -> Option CQuick Check:
AND operator = && [OK]
- Confusing && with ||
- Using & instead of &&
- Thinking ! means AND
isActive in Kotlin?Solution
Step 1: Recall Kotlin negation syntax
In Kotlin, the NOT operator is written as ! before the variable.Step 2: Check each option
!isActive uses !isActive which is correct. not isActive is invalid syntax, C places ! after variable which is wrong, D uses ~ which is bitwise NOT invalid for booleans.Final Answer:
!isActive -> Option AQuick Check:
Negate with ! before variable [OK]
- Putting ! after variable
- Using 'not' keyword incorrectly
- Using bitwise ~ for negation
val a = true val b = false println(a && !b || b)
Solution
Step 1: Evaluate !b
b is false, so !b is true.Step 2: Evaluate a && !b
a is true, !b is true, so a && !b is true.Step 3: Evaluate (a && !b) || b
True || false is true.Final Answer:
true -> Option BQuick Check:
True AND NOT false OR false = true [OK]
- Ignoring NOT precedence
- Mixing AND and OR order
- Assuming false output
val x = true
val y = false
if x && y {
println("Both true")
}Solution
Step 1: Check if statement syntax
Kotlin requires parentheses around the condition in if statements.Step 2: Identify the error
The code uses if x && y without parentheses, which causes a syntax error.Final Answer:
Missing parentheses around condition in if statement -> Option AQuick Check:
if condition needs parentheses [OK]
- Omitting parentheses in if
- Confusing && with ||
- Wrong println usage
val loggedIn = true val isAdmin = false // Choose the correct if condition
Solution
Step 1: Understand the requirement
Access is allowed only if user is logged in AND has admin rights.Step 2: Analyze each condition
if (loggedIn && isAdmin) { println("Access granted") } uses && to require both loggedIn and isAdmin true. if (loggedIn || isAdmin) { println("Access granted") } allows access if either is true, which is wrong. The remaining options use negations or incorrect logic, which do not meet requirement.Final Answer:
if (loggedIn && isAdmin) { println("Access granted") } -> Option DQuick Check:
Use AND to require both conditions true [OK]
- Using || instead of &&
- Negating conditions wrongly
- Allowing access if only one is true
Ready to prove it?
Pass the test and this pattern moves unknown
