Bird
Raised Fist0
Kotlinprogramming~5 mins

Nullable types with ? suffix in Kotlin - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Nullable types with ? suffix
O(n)
Understanding Time Complexity

We want to understand how using nullable types with the ? suffix affects the time it takes for a program to run.

Specifically, does checking for null add extra work as the input grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

fun printLengths(strings: List) {
    for (str in strings) {
        if (str != null) {
            println(str.length)
        } else {
            println("Null string")
        }
    }
}

This code goes through a list of strings that can be null and prints their length or a message if null.

Identify Repeating Operations
  • Primary operation: Looping through each item in the list once.
  • How many times: Exactly once per item in the list.
How Execution Grows With Input

As the list gets bigger, the program checks each item once, whether it is null or not.

Input Size (n)Approx. Operations
10About 10 checks and prints
100About 100 checks and prints
1000About 1000 checks and prints

Pattern observation: The work grows directly with the number of items. More items mean more checks and prints.

Final Time Complexity

Time Complexity: O(n)

This means the time to run grows in a straight line with the number of items in the list.

Common Mistake

[X] Wrong: "Checking for null makes the program slower in a way that depends on how many nulls there are."

[OK] Correct: The program always checks each item once, no matter if it is null or not. The number of nulls does not change how many times it checks.

Interview Connect

Understanding how nullable types affect performance helps you write clear and efficient Kotlin code, a useful skill in many coding situations.

Self-Check

What if we replaced the list with a nested list of nullable strings? How would the time complexity change?

Practice

(1/5)
1. What does adding a ? after a type in Kotlin mean?
easy
A. The variable is immutable.
B. The variable can hold a null value.
C. The variable is a constant.
D. The variable is a function.

Solution

  1. Step 1: Understand Kotlin type suffix

    In Kotlin, adding ? after a type means the variable can hold null.
  2. Step 2: Compare with non-nullable types

    Without ?, variables cannot be null and will cause errors if assigned null.
  3. Final Answer:

    The variable can hold a null value. -> Option B
  4. Quick Check:

    Nullable type = variable can be null [OK]
Hint: Remember: ? means nullable type in Kotlin [OK]
Common Mistakes:
  • Thinking ? makes variable immutable
  • Confusing ? with constant declaration
  • Assuming ? means function type
2. Which of the following is the correct syntax to declare a nullable String variable in Kotlin?
easy
A. var name: String?
B. var name: ?String
C. var name: String!
D. var name: nullable String

Solution

  1. Step 1: Recall Kotlin nullable syntax

    Kotlin uses ? after the type name to mark it nullable, e.g., String?.
  2. Step 2: Check each option

    var name: String? uses String? correctly. Options A, B, and D use invalid syntax.
  3. Final Answer:

    var name: String? -> Option A
  4. Quick Check:

    Nullable syntax = type followed by ? [OK]
Hint: Put ? right after the type name for nullable [OK]
Common Mistakes:
  • Placing ? before the type
  • Using ! instead of ?
  • Writing 'nullable' keyword explicitly
3. What will be the output of this Kotlin code?
var text: String? = null
println(text?.length ?: "No length")
medium
A. 0
B. null
C. No length
D. Throws NullPointerException

Solution

  1. Step 1: Understand safe call and Elvis operator

    text?.length safely accesses length if text is not null; else returns null. The Elvis operator ?: provides "No length" if left side is null.
  2. Step 2: Evaluate given code

    Since text is null, text?.length is null, so the expression prints "No length".
  3. Final Answer:

    No length -> Option C
  4. Quick Check:

    Safe call + Elvis = fallback value [OK]
Hint: Safe call ?. returns null safely; ?: provides default [OK]
Common Mistakes:
  • Expecting NullPointerException on null safe call
  • Thinking null?.length returns 0
  • Ignoring Elvis operator fallback
4. Identify the error in this Kotlin code snippet:
var number: Int? = 10
var result: Int = number + 5
medium
A. Variable 'result' should be nullable.
B. Variable 'number' cannot be nullable.
C. Missing semicolon after declaration.
D. Cannot add Int? and Int directly.

Solution

  1. Step 1: Check type compatibility

    number is nullable Int?, but result expects non-null Int. Adding nullable and non-null directly is not allowed.
  2. Step 2: Understand Kotlin's null safety

    You must safely unwrap number before adding, e.g., using number ?: 0 or safe call.
  3. Final Answer:

    Cannot add Int? and Int directly. -> Option D
  4. Quick Check:

    Nullable + non-null Int needs safe unwrap [OK]
Hint: Nullable Int can't be used directly in arithmetic [OK]
Common Mistakes:
  • Assuming nullable Int can be used like Int
  • Ignoring need for safe call or Elvis operator
  • Thinking semicolon is required in Kotlin
5. You have a nullable list of nullable Strings: val items: List?. How do you safely print the length of the first item or print 0 if the list or first item is null?
hard
A. println(items?.get(0)?.length ?: 0)
B. println(items[0].length)
C. println(items!!.get(0)!!.length)
D. println(items?.get(0).length ?: 0)

Solution

  1. Step 1: Analyze nullable types

    items can be null, and its elements can be null. So both list and first item need safe calls.
  2. Step 2: Use safe calls and Elvis operator

    items?.get(0)?.length ?: 0 safely accesses first item length or returns 0 if null.
  3. Final Answer:

    println(items?.get(0)?.length ?: 0) -> Option A
  4. Quick Check:

    Safe calls chain + fallback = safe nullable access [OK]
Hint: Chain ?. for each nullable and use ?: for default [OK]
Common Mistakes:
  • Using !! which throws exception if null
  • Missing safe call on first item
  • Assuming list or item can't be null
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