Bird
Raised Fist0
DSA Goprogramming~5 mins

Array Traversal Patterns in DSA Go - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Array Traversal Patterns
O(n)
Understanding Time Complexity

When we look at array traversal, we want to know how the time to complete the task changes as the array gets bigger.

We ask: How many steps does it take to visit every item in the array?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


func traverseArray(arr []int) {
    for i := 0; i < len(arr); i++ {
        // Process each element
        _ = arr[i]
    }
}
    

This code goes through each element of the array one by one and does a simple action.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Accessing each element of the array once.
  • How many times: Exactly once for each element, so as many times as the array length.
How Execution Grows With Input

As the array gets bigger, the number of steps grows directly with its size.

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

Pattern observation: Doubling the array size doubles the work needed.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows in a straight line with the number of elements.

Common Mistake

[X] Wrong: "Since the loop is simple, it must be constant time O(1)."

[OK] Correct: Even a simple loop that touches every element grows with the array size, so it is not constant time.

Interview Connect

Understanding how loops over arrays scale is a key skill. It helps you explain your code clearly and choose the right approach in real problems.

Self-Check

"What if we nested another loop inside to compare each element with every other? How would the time complexity change?"

Practice

(1/5)
1. What does the following Go code snippet do?
for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
easy
A. Prints each element of the array from start to end
B. Prints the array elements in reverse order
C. Prints only the first element of the array
D. Causes a runtime error due to index out of range

Solution

  1. Step 1: Understand the loop structure

    The loop starts at index 0 and runs while i is less than the length of the array, increasing i by 1 each time.
  2. Step 2: Analyze the print statement inside the loop

    Each iteration prints the element at index i, so all elements from start to end are printed in order.
  3. Final Answer:

    Prints each element of the array from start to end -> Option A
  4. Quick Check:

    Loop from 0 to len(arr)-1 prints all elements [OK]
Hint: Loop from 0 to len(arr) prints all elements in order [OK]
Common Mistakes:
  • Thinking it prints in reverse order
  • Assuming it prints only one element
  • Confusing loop condition causing error
2. Which of the following is the correct syntax to traverse an array arr using a range-based for loop in Go?
easy
A. for value in arr { fmt.Println(value) }
B. for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
C. for index, value := range arr { fmt.Println(index, value) }
D. foreach i in arr { fmt.Println(arr[i]) }

Solution

  1. Step 1: Recall Go's range syntax

    Go uses for index, value := range arr to iterate over arrays or slices.
  2. Step 2: Check each option

    for index, value := range arr { fmt.Println(index, value) } matches the correct syntax. for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) } is valid but not range-based. Options C and D are invalid Go syntax.
  3. Final Answer:

    for index, value := range arr { fmt.Println(index, value) } -> Option C
  4. Quick Check:

    Range loop syntax = for index, value := range arr { fmt.Println(index, value) } [OK]
Hint: Use 'for index, value := range arr' for range loops in Go [OK]
Common Mistakes:
  • Using Python or other language syntax
  • Confusing traditional for loop with range loop
  • Using invalid keywords like foreach
3. What is the output of the following Go code?
arr := []int{10, 20, 30, 40}
for i := len(arr) - 1; i >= 0; i-- {
    fmt.Print(arr[i], " ")
}
medium
A. 10 20 30 40
B. 40 30 20 10
C. Runtime error due to invalid index
D. No output

Solution

  1. Step 1: Understand the loop range

    The loop starts at index len(arr)-1 (3) and decrements i until it reaches 0.
  2. Step 2: Trace the printed values

    Indexes printed: 3, 2, 1, 0 corresponding to values 40, 30, 20, 10 printed with spaces.
  3. Final Answer:

    40 30 20 10 -> Option B
  4. Quick Check:

    Reverse loop prints elements backward [OK]
Hint: Loop from len(arr)-1 down to 0 prints array in reverse [OK]
Common Mistakes:
  • Assuming forward order output
  • Off-by-one errors causing runtime error
  • Confusing loop condition direction
4. Identify the error in this Go code snippet that tries to print all elements of an array arr:
for i := 0; i <= len(arr); i++ {
    fmt.Println(arr[i])
}
medium
A. The print statement syntax is incorrect
B. The loop variable should start from 1 instead of 0
C. The array arr is not declared
D. The loop condition should be i < len(arr) to avoid index out of range

Solution

  1. Step 1: Analyze the loop condition

    The loop runs while i <= len(arr), which means i can equal len(arr), an invalid index.
  2. Step 2: Understand array indexing

    Array indexes go from 0 to len(arr)-1. Accessing arr[len(arr)] causes runtime error.
  3. Final Answer:

    The loop condition should be i < len(arr) to avoid index out of range -> Option D
  4. Quick Check:

    Index must be less than length, not less or equal [OK]
Hint: Use i < len(arr) to avoid out-of-range errors [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Starting loop at 1 instead of 0
  • Ignoring array declaration errors
5. Given an array arr := []int{1, 2, 3, 4, 5}, which code snippet correctly prints only the elements at even indexes (0, 2, 4)?
hard
A. for i := 0; i < len(arr); i += 2 { fmt.Print(arr[i], " ") }
B. for i := 1; i < len(arr); i += 2 { fmt.Print(arr[i], " ") }
C. for _, v := range arr { if v%2 == 0 { fmt.Print(v, " ") } }
D. for i := len(arr)-1; i >= 0; i-- { if i%2 == 1 { fmt.Print(arr[i], " ") } }

Solution

  1. Step 1: Understand the requirement

    We want to print elements at even indexes: 0, 2, 4.
  2. Step 2: Check each option

    for i := 0; i < len(arr); i += 2 { fmt.Print(arr[i], " ") } increments i by 2 starting at 0, correctly accessing even indexes. for i := 1; i < len(arr); i += 2 { fmt.Print(arr[i], " ") } accesses odd indexes. for _, v := range arr { if v%2 == 0 { fmt.Print(v, " ") } } prints even values, not indexes. for i := len(arr)-1; i >= 0; i-- { if i%2 == 1 { fmt.Print(arr[i], " ") } } prints odd indexes in reverse.
  3. Final Answer:

    for i := 0; i < len(arr); i += 2 { fmt.Print(arr[i], " ") } -> Option A
  4. Quick Check:

    Increment by 2 from 0 prints even indexes [OK]
Hint: Increment index by 2 starting at 0 for even indexes [OK]
Common Mistakes:
  • Confusing even indexes with even values
  • Starting loop at 1 instead of 0
  • Using incorrect loop increments
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