Array Access and Update at Index in DSA C# - Time & Space Complexity
We want to understand how fast we can get or change a value in an array by its position.
How does the time to access or update an element change as the array grows?
Analyze the time complexity of the following code snippet.
int[] numbers = new int[1000];
numbers[500] = 42; // Update value at index 500
int value = numbers[500]; // Access value at index 500
This code updates and then accesses a value at a specific position in the array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Direct access to an array element by index.
- How many times: Each access or update happens once, no loops or repeated steps.
Accessing or updating an element takes the same time no matter how big the array is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays constant even if the array grows larger.
Time Complexity: O(1)
This means accessing or updating an element by index takes the same small amount of time no matter how big the array is.
[X] Wrong: "Accessing an element takes longer if the array is bigger because it has to look through all elements."
[OK] Correct: Arrays allow direct access by position, so the computer jumps straight to the spot without checking others.
Knowing that array access and update are very fast helps you choose the right data structure and explain your choices clearly in interviews.
"What if we used a linked list instead of an array? How would the time complexity for access and update change?"
Practice
arr[2] do in an array arr?Solution
Step 1: Understand array indexing
Array elements are accessed by their index, starting from 0.Step 2: Access element at index 2
The expressionarr[2]retrieves the element stored at the third position (index 2) in the array.Final Answer:
Accesses the element at index 2 in the array -> Option BQuick Check:
arr[2] means get element at index 2 [OK]
- Thinking index starts at 1
- Confusing access with insertion
- Assuming arr[2] returns array length
numbers to 10 in C#?Solution
Step 1: Identify correct syntax for array indexing in C#
C# uses square brackets[]to access or update array elements by index.Step 2: Apply update syntax
To update the element at index 1, usenumbers[1] = 10;.Final Answer:
numbers[1] = 10; -> Option CQuick Check:
Use square brackets for array index update [OK]
- Using parentheses () instead of brackets []
- Using curly braces {} which are invalid for arrays
- Using angle brackets <> which are for generics
int[] arr = {5, 10, 15};
arr[1] = 20;
Console.WriteLine(arr[1]);Solution
Step 1: Initialize array and update element
The arrayarrstarts as {5, 10, 15}. Thenarr[1] = 20;changes the element at index 1 from 10 to 20.Step 2: Print updated element
Console.WriteLine(arr[1]);prints the updated value at index 1, which is now 20.Final Answer:
20 -> Option AQuick Check:
arr[1] updated to 20, so output is 20 [OK]
- Printing old value before update
- Confusing index 1 with index 0
- Assuming array is unchanged
int[] data = new int[3]; data[3] = 100;
Solution
Step 1: Check array size and valid indices
The arraydatahas size 3, so valid indices are 0, 1, and 2.Step 2: Analyze assignment at index 3
Accessingdata[3]is invalid and causes an index out of range error at runtime.Final Answer:
Index out of range error at data[3] -> Option AQuick Check:
Array indices go from 0 to length-1 [OK]
- Using index equal to array length
- Assuming array indices start at 1
- Ignoring runtime exceptions
int[] nums = {1, 2, 3, 4, 5};, which code snippet correctly doubles the value of each element in the array?Solution
Step 1: Understand array traversal for update
To update each element, we must loop from index 0 to Length-1 usingi < nums.Length.Step 2: Analyze each option
for (int i = 0; i <= nums.Length; i++) { nums[i] = nums[i] * 2; } usesi <= nums.Lengthwhich causes index out of range error.
for (int i = 0; i < nums.Length; i++) { nums[i] = nums[i] * 2; } correctly loops from 0 to Length-1 and updates each element.
for (int i = 1; i < nums.Length; i++) { nums[i] = nums[i] * 2; } starts from 1, skipping index 0.
foreach (int i in nums) { i = i * 2; } uses foreach which does not allow modifying elements directly.Final Answer:
for (int i = 0; i < nums.Length; i++) { nums[i] = nums[i] * 2; } -> Option DQuick Check:
Use for loop with i < Length to update array [OK]
- Using <= instead of < causing errors
- Starting loop at 1 skipping first element
- Using foreach which cannot modify array elements
Ready to prove it?
Pass the test and this pattern moves unknown
