Bird
Raised Fist0
Kotlinprogramming~5 mins

Single-expression functions in Kotlin - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Single-expression functions
O(n)
Understanding Time Complexity

We want to see how fast a single-expression function runs as the input size changes.

How does the work inside this short function grow when input grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

fun sumList(numbers: List<Int>) = numbers.sum()

This function returns the sum of all numbers in a list using a single-expression style.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The function calls sum() which goes through each number in the list once.
  • How many times: It visits every item in the list exactly one time.
How Execution Grows With Input

As the list gets bigger, the function does more work by adding more numbers.

Input Size (n)Approx. Operations
1010 additions
100100 additions
10001000 additions

Pattern observation: The work grows directly with the number of items; double the items, double the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows in a straight line with the size of the list.

Common Mistake

[X] Wrong: "Because the function is one line, it must run instantly no matter the input size."

[OK] Correct: Even a single line can do a lot of work if it processes every item in a list. The length of the list matters more than the number of lines.

Interview Connect

Understanding how simple-looking functions still depend on input size helps you explain your code clearly and think about efficiency in real projects.

Self-Check

"What if we changed the function to return the first item instead of summing all? How would the time complexity change?"

Practice

(1/5)
1. What is a key feature of a single-expression function in Kotlin?
easy
A. It returns the value of the expression after the equals sign automatically.
B. It requires a block body with explicit return statements.
C. It cannot have parameters.
D. It must be declared inside a class.

Solution

  1. Step 1: Understand single-expression function syntax

    Single-expression functions use an equals sign followed by an expression, without braces.
  2. Step 2: Identify the return behavior

    They automatically return the value of that expression without needing an explicit return keyword.
  3. Final Answer:

    It returns the value of the expression after the equals sign automatically. -> Option A
  4. Quick Check:

    Single-expression function = auto return [OK]
Hint: Look for '=' and no braces for single-expression functions [OK]
Common Mistakes:
  • Thinking explicit return is needed
  • Assuming parameters are not allowed
  • Believing it must be inside a class
2. Which of the following is the correct syntax for a single-expression function in Kotlin that adds two integers?
easy
A. fun add(a: Int, b: Int) { return a + b }
B. fun add(a: Int, b: Int) = a + b
C. fun add(a: Int, b: Int): Int { a + b }
D. fun add(a: Int, b: Int): Int => a + b

Solution

  1. Step 1: Identify single-expression function syntax

    It uses '=' followed by the expression without braces or explicit return.
  2. Step 2: Check each option

    fun add(a: Int, b: Int) = a + b matches this syntax exactly: fun add(a: Int, b: Int) = a + b.
  3. Final Answer:

    fun add(a: Int, b: Int) = a + b -> Option B
  4. Quick Check:

    Equals sign and expression = correct syntax [OK]
Hint: Single-expression functions use '=' not braces [OK]
Common Mistakes:
  • Using braces with return in single-expression functions
  • Using '=>' instead of '='
  • Omitting '=' sign
3. What will be the output of this Kotlin code?
fun square(x: Int) = x * x
println(square(4))
medium
A. 16
B. 4
C. x * x
D. Compilation error

Solution

  1. Step 1: Understand the function behavior

    The function square returns the product of x times x.
  2. Step 2: Calculate the output for input 4

    4 * 4 = 16, so square(4) returns 16, which is printed.
  3. Final Answer:

    16 -> Option A
  4. Quick Check:

    4 squared = 16 [OK]
Hint: Multiply input by itself for square function [OK]
Common Mistakes:
  • Expecting the expression as a string output
  • Confusing input with output
  • Thinking it causes a compile error
4. Identify the error in this Kotlin single-expression function:
fun greet(name: String) = {
    "Hello, $name!"
}
medium
A. Missing return type declaration.
B. String interpolation is invalid.
C. Using braces {} after equals sign is incorrect.
D. Function must have no parameters.

Solution

  1. Step 1: Check single-expression function syntax

    Single-expression functions use '=' followed by an expression without braces.
  2. Step 2: Identify the error

    The braces after '=' create a lambda block, which is not allowed here; it should be just the expression.
  3. Final Answer:

    Using braces {} after equals sign is incorrect. -> Option C
  4. Quick Check:

    No braces allowed after '=' in single-expression functions [OK]
Hint: No braces after '=' in single-expression functions [OK]
Common Mistakes:
  • Adding braces after '='
  • Thinking return type is mandatory
  • Misusing string interpolation syntax
5. You want to write a Kotlin single-expression function that returns the length of a string only if it is not empty; otherwise, it returns zero. Which of these is correct?
hard
A. fun lengthOrZero(s: String) = s.length ?: 0
B. fun lengthOrZero(s: String) { if (s.isNotEmpty()) return s.length else return 0 }
C. fun lengthOrZero(s: String): Int = { if (s.isNotEmpty()) s.length else 0 }
D. fun lengthOrZero(s: String) = if (s.isNotEmpty()) s.length else 0

Solution

  1. Step 1: Understand the requirement

    The function must return length if string is not empty, else zero, in a single expression.
  2. Step 2: Check each option

    fun lengthOrZero(s: String) = if (s.isNotEmpty()) s.length else 0 uses a single-expression function with an if-else expression correctly. fun lengthOrZero(s: String) { if (s.isNotEmpty()) return s.length else return 0 } uses braces and explicit returns, not single-expression. fun lengthOrZero(s: String): Int = { if (s.isNotEmpty()) s.length else 0 } wrongly uses braces after '='. fun lengthOrZero(s: String) = s.length ?: 0 misuses the Elvis operator on Int.
  3. Final Answer:

    fun lengthOrZero(s: String) = if (s.isNotEmpty()) s.length else 0 -> Option D
  4. Quick Check:

    If-else expression after '=' = correct single-expression function [OK]
Hint: Use if-else expression directly after '=' for conditions [OK]
Common Mistakes:
  • Using braces after '='
  • Trying to use return inside single-expression function
  • Misusing Elvis operator on non-nullable Int
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard